spring与jms、weblogic的集成,即使消息被消费到通道中,消息也会出现在队列中
我正在使用spring与WebLogicJMS的集成。我的逻辑是将json对象放在jms队列中,并将其从队列消费到通道中,验证它并基于特定字段路由它。如果有任何错误,请进行修复并将其放回队列。我有两个问题。1.当消息被消费到对象中时,我仍然可以在weblogic的管理控制台中将该对象视为挂起。2.修复验证后,如果将修改后的对象放入队列中,我将从队列中获取原始对象spring与jms、weblogic的集成,即使消息被消费到通道中,消息也会出现在队列中,jms,spring-integration,weblogic12c,Jms,Spring Integration,Weblogic12c,我正在使用spring与WebLogicJMS的集成。我的逻辑是将json对象放在jms队列中,并将其从队列消费到通道中,验证它并基于特定字段路由它。如果有任何错误,请进行修复并将其放回队列。我有两个问题。1.当消息被消费到对象中时,我仍然可以在weblogic的管理控制台中将该对象视为挂起。2.修复验证后,如果将修改后的对象放入队列中,我将从队列中获取原始对象 <int-jms:outbound-channel-adapter id="jmsOutbound" channel="
<int-jms:outbound-channel-adapter id="jmsOutbound"
channel="requestChannel" connection-factory="queueConnectionFactory"
destination="inputQueue" />
<int-jms:message-driven-channel-adapter
id="jmsInbound" connection-factory="queueConnectionFactory"
destination="inputQueue" channel="routingChannel" />
if (message.getHeaders().get("documentType").equals("sec"))
routingChannels.add(outboundSecChannel);
else if (message.getHeaders().get("documentType").equals("unds"))
routingChannels.add(outboundFChannel);
else if (message.getHeaders().get("documentType").equals("CH"))
routingChannels.add(outboundAChannel);
else{
routingChannels.add(errorChannel);
}
if(message.getHeaders().get(“documentType”).equals(“sec”))
RoutingChannel.add(outboundSecChannel);
else if(message.getHeaders().get(“documentType”).equals(“unds”))
RoutingChannel.add(outboundFChannel);
else if(message.getHeaders().get(“documentType”).equals(“CH”))
routingChannels.add(outboundAChannel);
否则{
路由通道。添加(错误通道);
}
使用路由输入通道
谢谢您的帮助。我认为您应该将消耗部分与生产部分区分开来。我不告诉你必须切换到事务,但至少应该完成对已消费消息的简单确认
因为您告诉我们您将把消息放回队列,所以始终独立于错误事实来确认已使用的消息肯定是事实。因此,我建议将
队列通道
或执行器通道
放置在
之后和
之前的某个位置,让他们在自己的线程中使用WebLogic JMS完成他们的艰苦工作。谢谢@Artem,这满足了我的需要。我将修改后的消息作为新消息放置。