我正在尝试确定使用ApacheCamel和Spring将来自两个hornetq broker实例的消息流组合成单个流进行处理的最佳方式。这本质上与驼峰接收列表模式相反;但我需要的不是一对多,而是多对一。一个想法是使用direct组件实现此功能:
<?xml version="1.0" encoding="UTF-8"/>
<beans xmlns="..."
xmlns="...">
<!-- JMS Connection 1 -->
<bean id="jndiTemplate1" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
...Connection 1 Specific Information...
</props>
</property>
</bean>
<bean id="jmsTopicConnectionFactory1"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate">
<ref bean="jndiTemplate1"/>
</property>
<property name="jndiName">
<value>java:jms/RemoteConnectionFactory</value>
</property>
</bean>
<bean id="jms1" class="org.apache.camel.component.jms.JmsComponent">
<property name="connectionFactory" ref="jmsTopicConnectionFactory1"/>
</bean>
<!-- JMS Connection 2 -->
<bean id="jndiTemplate2" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
...Connection 2 Specific Information...
</props>
</property>
</bean>
<bean id="jmsTopicConnectionFactory2"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate">
<ref bean="jndiTemplate2"/>
</property>
<property name="jndiName">
<value>java:jms/RemoteConnectionFactory</value>
</property>
</bean>
<bean id="jms2" class="org.apache.camel.component.jms.JmsComponent">
<property name="connectionFactory" ref="jmsTopicConnectionFactory2"/>
</bean>
<!-- Camel route many to 1 using direct component -->
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route id="hornetQ_broker_1">
<from uri="jms1:topic:testTopic1">
<to uri="direct:process_message">
</route>
<route id="hornetQ_broker_2">
<from uri="jms2:topic:testTopic2">
<to uri="direct:process_message">
</route>
<route id="message_processor">
<from uri="direct:process_message">
<log message="message_processor received message">
</route>
</camelContext>
</beans>
问题:在许多情况下,是否建议采用上述方法-
运行时环境:
笔记:
我认为你的方法适用于你的情况。但是,如果您在不同的JVM中运行,可能direct不是您需要使用的组件。
内部队列有不同的组件:直接、直接虚拟机、SEDA、虚拟机、干扰器...但是我相信如果你在JVM中运行,它们都是(如果你只是在同一个CamelContext中运行,其中一些也是)。有关更多信息:直接、事件、seda和vmendpoint如何比较
如果要在不同的JVM中使用不同的上下文,则需要使用不同的组件。
在Spring集成中使用出站网关时,我试图在JMS标头中发送回复Q详细信息。我了解到JIRA#INT-97中的增强功能在将Spring消息标头发送到JMS目标之前将其复制到JMS标头。 在将消息发送到出站网关之前,将消息头设置如下。message.getHeader(). setAtcm(JmsTargetAdapter.JMS_REPLY_TO, myReplyDestation); 但是我无法
我是Spring集成的新手,正在研究一个从单个通道向多个通道发送消息的示例,从这个角度来看,为每个通道使用Redis消息存储,目的是不丢失任何消息。要求将消息发送到通道-replyChannel、mailChannel和dbChannel。目前,代码只打印sysout语句,没有主要功能。 为了检查消息是否被正确路由,我编写了一个java测试类来发送15条消息。 检查输出,我发现一些消息正在丢失。也
所以,问题在于路由器。当路由器尝试向通道发送消息时,我会收到错误:Dispatcher没有通道“newTypingNotificationHandler”的订户。输入'。但我有这个频道名称的集成流防御。 原因: org.springframework.integration.MessageDispatching异常:调度器在org.springframework.integration.dispa
使用Java 8 streams,我可以通过分类器对消息进行分组: 我想写一个聚合器,将消息进行相应的分组。在如上所示的五条有效载荷消息中,我想生成三条消息:第一条消息应将“a”作为有效载荷,第二条消息应将三条“b”作为有效载荷,第三条消息应将“c”作为有效载荷。 当达到序列大小时,应释放所有消息组。基于有效负载的分组工作正常,但消息组永远不会被释放。 在发布策略中,我可以访问序列大小,但我无法找
我有一个集成应用程序,大部分工作,但注意到昨天一个消息丢失了。当时,service-activatorendpoint正忙于处理先前的消息。 以下是适用于该问题的配置。
问题内容: 注意-Go中的新手。 我编写了一个多路复用器,该多路复用器 应将 一组通道的输出合并为一个。对建设性的批评感到满意。 我正在测试: 但是我的输出很奇怪: 所以对我的问题: Mux中我在做错什么吗? 为什么我只能从输出通道中获取最后10个? 为什么喂食看起来如此奇怪?(每个输入通道的第一个,最后一个通道的所有,然后什么都没有) 有更好的方法吗? 我需要所有输入通道具有与输出通道相同的权限