设置:默认ActiveMQ.XML。本地数据中心的3台服务器上的每台服务器一个ActiveMQ实例,远程数据中心服务器上的每个服务器一个Active MQ实例。所有3个1实例都在运行,但每个数据中心在任何给定时刻只有一个ActiveMQ实例是主实例。来自所有数据中心的所有实例的消息都将持久化到网络KahaDB,我们为每条消息配置了两次重试。
目标:保持数据中心之间的队列同步。
问题:要测试远程服务器何时关闭,所有消息都将被保存/持久化,直到远程服务器重新联机。我将向ActiveMQ主题发送三条消息。
骆驼路由被配置为读取主题并推送到2个本地队列。
第二个camel路由设置为从一个本地队列中读取,并将消息推送到远程ActiveMQ。
当远程服务器关闭(数据中心2关闭),并且我们从主ActiveMQ(通过停止服务)故障切换到从服务器时,3条消息中的1条消息将丢失到以太。这似乎是发送到远程服务器的第一条消息。就好像连接被拒绝了什么的,它就永远消失了,甚至连DLQ都没有?
骆驼配置:
<bean id="local" class="org.apache.activemq.camel.component.ActiveMQComponent">
<property name="brokerURL" value="tcp://localhost:12345"/>
<property name="preserveMessageQos" value="true" />
</bean>
<bean id="remote" class="org.apache.activemq.camel.component.ActiveMQComponent">
<property name="brokerURL" value="failover:(tcp://remotehost:54321)"/>
<property name="preserveMessageQos" value="true" />
</bean>
<camelContext id="topicToQueueCamelContext" xmlns="http://camel.apache.org/schema/spring">
<route id="topicToQueue">
<from uri="local:topic:SomeTopic"/>
<to uri="local:queue:SomeQueue"/>
<to uri="local:queue:SomeQueue.Remote"/>
</route>
</camelContext>
<camelContext id="queueToRemoteQueueCamelContext" xmlns="http://camel.apache.org/schema/spring">
<route id="queueToRemoteQueue">
<from uri="local:queue:SomeQueue.Remote"/>
<to uri="remote:queue:SomeQueue"/>
</route>
</camelContext>
尝试:将远程骆驼路由设置为事务处理,并在代理URL故障转移传输上设置trackMessages=true。
是否有人对ActiveMQ BrokerURL、ActiveMQ XML或Camel URI查询字符串参数可能丢失有任何想法——或者对如何解决或调试此丢失消息问题有任何想法?
您需要配置您的< code>ActiveMQComponent来使用事务性消息。默认情况下,消息消费不是事务性的。这样您可以获得最佳性能,但是您也“接受”丢失消息。
生产者可以发送两种不同的消息类型;和(每个消息的内容无关,但假设它们都有一个字段)。每个消息使用的路由密钥分别是和。生产者不依赖默认的Java序列化,而是使用。 使用者有一个队列,该队列使用的路由键绑定到同一个交换。一旦使用,使用者所要做的就是在日志文件中打印每个消息的。为了检索字段的值,需要将JSON有效负载转换为某种对象。 这两个组件之间不共享消息类(和)。使用者的对象在其消息表示中可能有或多
我试图通过驼峰路由将消息放到Weblogic JMS中的队列中。 我的目标是最终配置一个Route以使用来自jms队列的消息,我将早期Route的数据发布到该队列。 这是我的配置: 我的路线如下所示: 我尝试执行此路由时遇到此异常: 我按照以下过程创建了此处提到的队列:https://blogs.oracle.com/soaproactive/entry/how_to_create_a_simpl
我在MyRouteBuilder中有一条骆驼路线。正在使用ActiveMQ消息的java文件: 我写了一个测试用例如下: 当我运行单元测试用例时,我得到了这个奇怪的错误: 看到这些信息,我尤其感到困惑: 和 虽然我有一个正确的队列名称,但为什么队列显示为?还有,为什么代理url? 我想运行这个单元测试用例,以便它在所有环境中正常运行,如:本地、DIT、SIT、PROD等。因此,我不能负担的经纪人u
我使用骆驼与hazelcast组件和面临的问题与交换头,当交换通过hazelcast seda。 我需要轮询目录中的文件,并将交换发送到seda hazelcast队列(以处理集群中的交换)。 这种情况有一个简单的例子。有两个路由,在其他JVM中运行: 首先是轮询文件: 第二个问题是: 当我试图阅读像或其他,我意识到它们是空的。 通过hazelcast seda组件传输交换时,是否可以保存标头?
我正在使用死信频道EIP与骆驼文件中描述的死信频道完全相同。这是我的camel.xml(删除头) 我只有一条路由具有基于内容的路由器,其实质是,如果消息体具有getInfo,则从jms:foo路由到jms:getInfo,如果消息体具有performAction,则从jms.foo路由到jms:performAction 我预计,当jms:getInfo使用者没有运行时,交付将失败,重新交付尝试将