【发布时间】:2018-05-18 23:40:28
【问题描述】:
我正在使用来自 tibco 队列的消息,session transacted true 的吞吐量为 13 msgs/sec,session transacted as false 和 DUPS_OK_ACKNOWLEDGE ack 模式的吞吐量为 160 msgs/sec,这是有希望的,但是当应用程序中抛出异常,然后消息丢失。
任何人都可以建议我如何处理这种情况,我需要高吞吐量,同时不会在异常时丢失消息。
.from(Jms.messageDrivenChannelAdapter(tibcoConnectionFactory)
.destination(sourceQueue)
.configureListenerContainer(spec -> {
spec.sessionTransacted(false);
spec.sessionAcknowledgeMode(Session.DUPS_OK_ACKNOWLEDGE);
}))
.transform(orderTransformer, "transform", e -> e.advice(idempotentReceiverInterceptor())
.handle(orderService, "save")
.get();
【问题讨论】:
-
您使用的是什么容器?如果您不使用事务,则必须使用 SimpleMLC(而不是 DefaultMLC)。那么你不应该丢失消息。
-
使用 spring boot 容器和
CachingConnectionFactory。而且我还需要按顺序阅读消息,所以只有单线程消费者
标签: jms spring-jms tibco