当前位置: 首页 > 知识库问答 >
问题:

ActiveMQ Artemis broker上未发布“正在传递”状态的消息

宋宇
2023-03-14

因此,我尝试在代理或客户端连接字符串 (tcp://host1:61616,tcp://host2:61616)上设置,ha=true&connectionttl=60000&reconnection尝试=-1),但这似乎没有任何效果,因为连接不会关闭,消息也不会释放。为了使用消息,我使用带有cachingconnectionFactory的Artemis JMS Spring客户机,但也尝试了JMSpoolconnectionFactory

<bean id="connectionFactory"
    class="org.springframework.jms.connection.CachingConnectionFactory">
    <property name="targetConnectionFactory">
          <bean  class="org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory">
                 <property name="user" value="${spring.artemis.user}" />
                 <property name="password" value="${spring.artemis.password}" />
                 <property name="brokerURL" value="${spring.artemis.brokerUrl}" />
           </bean>
     </property>
     <property name="cacheConsumers" value="false"/>
</bean>

<int-jms:message-driven-channel-adapter
     connection-factory="connectionFactory"
     destination="myQueue"
     message-converter="messageConverter"
     channel="inputChannel"
     concurrent-consumers="${processing.poolsize}"
     max-concurrent-consumers="${max.processing.poolsize}"
     error-channel="errorChannel"
     acknowledge="transacted"
/>

解决这个问题的唯一方法似乎是重新启动消费者应用程序,以解锁消息,但这不是理想的选择。

如何解决此问题?有没有一种不用人工干预、不用重启消费APP就能发布消息的方法?

共有1个答案

程昕
2023-03-14

CachingConnectionFactory中使用变量并发可能是问题所在。

当一个“空闲”使用者返回到缓存时,代理不知道使用者不是活动的,仍然向它发送消息。

缓存工厂实际上只需要在生产者端(JMSTemplate),以避免为每次发送创建连接和会话。

 类似资料:
  • 顺便说一下,在使用/而不是发射器时,我遇到了同样的问题。我已经决定给你们举这个例子,因为它很容易理解和再现。

  • 我正在使用JavaMail应用编程接口来获取一些电子邮件。我想得到一个消息流,然后在另一边得到一个电子邮件流。此外,我不想失去任何属性,如附件、目的地、发送者、正文等... 如何才能做到这一点?

  • 我得到这个错误时,调用请求权限()方法的Firebase消息。 [错误:flatter/lib/ui/ui_dart_state.cc(209)]未处理的异常:MissingPluginException(未找到方法消息传递的实现#通道插件上的requestPermission.flatter.io/firebase_消息传递)E/flatter(7180):#0 convertPlatformE

  • 我正在尝试使用buckecord/Bukkit插件消息通道来接收关于玩家的数据(特别是他们在哪个聊天通道),首先从buk kit发送一个插件消息- 我在这里使用了教程,但服务器只是崩溃了,因为当从Bungee服务器接收到插件消息时,不会触发,所以不会触发。 以下是请求信息的代码: 下面是收到的插件消息的代码: 如果有一种方法可以做到这一点,而不需要等待服务器的其余部分(插件的其余部分可以在等待响应

  • 我最近一直在尝试gRPC错误处理,希望将我自己的proto消息传递给客户端(定义我自己的错误详细信息和内部错误代码)。在四处搜索之后,找到了几个使用gRPC状态包中的WithDetails()附加自定义元数据的示例。我开始实现如下相同的功能 gRPC协议消息 服务器端实现 客户端实现 当我运行代码时,它击中了服务器代码中添加的Panic(),这意味着Wit详细信息()出错了。 为了进一步进行,删除

  • 在Flink数据流中,假设上游运算符托管在机器/任务管理器上,那么上游运算符如何知道下游运算符托管在其上的机器(任务管理器)。是否在JobManager对作业子/任务(操作符)进行初始调度期间,在下游/上游操作符之间建立了这样的数据流路径,并且这样的数据流路径在应用程序生存期内是固定的? 更一般地,考虑Flink状态函数,其中支持动态消息传递,并且数据流不是固定的或预定义的,并且给定一个具有键的函