<bean id="jms" class="org.apache.camel.component.jms.JmsComponent">
<property name="connectionFactory" ref="jmsConnectionFactory" />
</bean>
<camelContext id="camelContext" xmlns="http://camel.apache.org/schema/spring">
<route id="routeOne" delayer="10000">
<from uri="jms://queueone?concurrentConsumers=1"/>
<log message="routeOne incoming message ${body}"/>
<delay><constant>30000</constant></delay>
<process ref="loggerProcessor"/>
</route>
</camelContext>
<bean id="loggerProcessor" name="loggerProcessor" class="emh.LoggerProcessor"/>
Camel delay和throttle将从ActiveMQ队列中删除(消耗)消息,并将其保留在路由中(内存中),直到处理完毕。事务JMS可能会缓解与丢失消息有关的问题,但还没有尝试过。发人深省。
我使用AMQ_scheduled_delay
标头和启用schedulersupport
[1,2,3,4,5,6]使它在Spring Boot2中与Camel和ActiveMQ一起工作。这是每个JMS2.0交付延迟。
请注意,只有当没有活动使用者时,消息才会出现在ActiveMQ队列(挂起)中,即应用程序关闭或Camel路由禁用。下面的配置用于使用现有的ActiveMQ代理。
spring.activemq.broker-url=tcp://localhost:61616
from("jms://incomingQueue").setHeader("AMQ_SCHEDULED_DELAY", constant("1000")).inOnly("jms://delayedQueue");
from("jms://delayedQueue").process(...);
xml(现有的代理安装)
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}" schedulerSupport="true">
在/usr/local/cellar/activemq/
下找到OSX自制程序。
如果希望使用嵌入在应用程序中的代理,可以使用BrokerService。
@Bean
public BrokerService brokerService()
{
BrokerService brokerService = new BrokerService();
brokerService.setSchedulerSupport( true );
return brokerService;
}
我们的环境由3个jboss服务器组成(门户、jms、协调)。 协调服务器托管骆驼路由,该路由具有消耗自队列(SLAQueue)的路由 JMS服务器托管了我们的所有队列 最近,我们发现了一个错误,即托管在JMS服务器上的TaskQueue中的一些消息没有传递到门户服务器上的MDB。由于某些原因,它们被卡住了,当我们重新启动JMS服务器时,卡住的消息被传递 为了进行调查,我们在“org.apache.
因此,我使用Spring integration链接JMS和ActiveMQ,如下所示:- 如何使其工作,以便发送到此队列并从中接收消息?请帮忙。
如何延迟JMS消息发送或在不确定的时间内继续? 我使用的是Weblogic,正如您所知,在JMS发送之后,接收方将异步处理消息,但是,此时或有时外部资源还没有为接收方做好准备,因此,我想使用一些检查逻辑来延迟发送或处理消息。我猜例如:我将消息放入挂起队列,然后频繁检查资源可用性,一旦发送或继续消息? 大家都知道Weblogic是否支持这一点,或者如何实现它吗?
我们最近将应用程序从 Weblogic 迁移到了 JBOSS Fuse。作为此迁移的一部分,我们还必须将 JMS 实现更改为 Active MQ。由于某些约束,将请求发送到旧 Weblogic JMS 队列的客户端将无法进行更改以将请求发送到新的活动 MQ。有没有办法保持客户端不变(仅更改主机和端口以指向新服务器)并接收发送到Weblogic JMS队列的消息(当然没有weblogic服务器)并将
此应用程序收到 但是,当不存在web套接字会话,并且JMSProducer将消息发送到QueueSenderSessionBean中的目标“jms/notificationQueue”时,消息会立即在NotificationEndpoint中使用。这不是我的意图。 我的目的是让队列保留消息,直到用户连接到NotificationEndpoint。如果用户没有连接到NotificationEndpo
我有一个Spring应用程序在独立的JBoss EAP 6.2中运行(带有嵌入式HornetQ提供程序)。 消息被成功地放在队列中(我可以在jboss eap-6.2\独立\data\MessagingJournal\hornetq-data-1.hq中看到它们,因为队列是持久的),但不会被侦听器拾取(侦听器中的断点不会被命中)。我怀疑配置中缺少或错误的东西,但看不出是什么。JBoss启动时没有任