【问题标题】:ActiveMq Producer is taking longer time to send JMS message to Destination queueActiveMq Producer 将 JMS 消息发送到目标队列需要更长的时间
【发布时间】:2016-02-15 03:33:19
【问题描述】:

我们面临一个问题,从骆驼 java DSL 路由向特定队列发送 JMS 消息,需要将近 20 秒,这对我们来说是非常糟糕的响应。这里只运行单线程,没有多线程。

请您指点一下,延迟的原因可能是什么。由于在 ActiveMq 代理配置中启用了生产者流控制,是生产者挂起的场景吗?如果是,如何处理?

请在此处查找日志:

015-11-13 12:25:43,733 |调试 | r[GET_QUERY_QUEUE] | Jms配置 | 162 - org.apache.camel.camel-jms - 2.10.2.1-SNAPSHOT |发送 JMS 发送至:temp-queue://ID:test-portal-01-53869-1447403844710-5:1:6 带有消息:ActiveMQObjectMessage {commandId = 0,responseRequired = 假,messageId = null,originalDestination = null, originalTransactionId = null,producerId = null,destination = null, transactionId = null,过期 = 1447406874046,时间戳 = 0, 到达 = 0,brokerInTime = 0,brokerOutTime = 0,correlationId = Camel-ID-msc-01-58624-1447403845629-15-4289

2015-11-13 12:26:03,355 |调试 | r[GET_QUERY_QUEUE] | 临时队列回复管理器 | 162 - org.apache.camel.camel-jms - 2.10.2.1-快照 |收到带有相关 ID 的回复消息 [Camel-ID-msc-pcen-portal-01-58624-1447403845629-15-4289] -> ActiveMQObjectMessage {commandId = 70773, responseRequired = true, messageId = ID:msc-pcen-portal-01-53869-1447403844710-5:1:91:83:1, originalDestination = null, originalTransactionId = null, producerId = ID:msc-pcen-portal-01-53869-1447403844710-5:1:91:83,目的地= 临时队列://test-portal-01-53869-1447403844710-5:1:6,transactionId = 空,到期 = 0,时间戳 = 1447406743733,到达 = 0, brokerInTime = 1447406763354,brokerOutTime = 1447406763354, 相关 ID = Camel-ID-msc-01-58624-1447403845629-15-4289,

2015-11-13 12:25:39,046 |调试 | [RETRIEVAL_QUERY] | Jms配置 | 162 - org.apache.camel.camel-jms - 2.10.2.1-SNAPSHOT |发送 JMS 消息到:queue://GET_QUERY_QUEUE 消息:ActiveMQObjectMessage {commandId = 0, responseRequired = false, messageId = null, originalDestination = null, originalTransactionId = null, producerId = null, destination = null, transactionId = null, expiration = 1447406870890 ,时间戳 = 0,到达 = 0,brokerInTime = 0,brokerOutTime = 0,correlationId = Camel-ID-msc-01-58624-1447403845629-15-4289

2015-11-13 12:25:43,624 |调试 | r[GET_QUERY_QUEUE] |端点消息监听器 | 162 - org.apache.camel.camel-jms - 2.10.2.1-SNAPSHOT | Endpoint[jmsvm://queue:GET_QUERY_QUEUE?concurrentConsumers=1&maxConcurrentConsumers=10] 消费者收到 JMS 消息:ActiveMQObjectMessage {commandId = 70677, responseRequired = true, messageId = ID:msc-pcen-portal-01-53869-1447403844710-5:1 :125:101:1, originalDestination = null, originalTransactionId = null, producerId = ID:msc-pcen-portal-01-53869-1447403844710-5:1:125:101, destination = queue://GET_QUERY_QUEUE, transactionId = null ,过期 = 1447406874046,时间戳 = 1447406739046,到达 = 0,brokerInTime = 1447406743623,brokerOutTime = 1447406743623,correlationId = Camel-ID-msc-01-58624-1447403845629-15-4289,

【问题讨论】:

    标签: java apache-camel activemq


    【解决方案1】:

    听起来您错误地通过 JMS 进行请求/重新部署,并且 bt 默认使用 20 秒超时来等待回复消息。如果您只想以 fire and forget 样式向队列发送消息,请确保将消息交换模式设置为 InOnly。

    了解这些 EIP

    【讨论】:

    • 感谢克劳斯·林森的回复。
    • 在 GET_QUERY_QUEUE 上定义的骆驼路线是 InOut 并且是有意的。但是在骆驼路线中,为什么在尝试向 temp-queue 发送消息和 temp-queue 获取消息之间存在 20 秒的延迟。这20秒的时间不是固定的,有时是8-10秒,但还是很长!!我已经更新了上面的日志。它看起来要么生产者被阻止向队列发送消息,要么消费者/路由无法快速响应。不是吗?
    猜你喜欢
    • 2015-02-19
    • 2016-05-02
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多