【问题标题】:Issue with acknowledging JMS messages from Camel endpoint从 Camel 端点确认 JMS 消息的问题
【发布时间】:2012-07-11 17:12:01
【问题描述】:

我有一个简单的 Camel 应用程序,它正在跟踪 JMS 端点。我目前遇到一个问题,似乎接收到的 JMS 消息没有被确认(它正在从队列中读取而没有放置任何消息并且当前队列深度没有减少)。

对可能导致此问题的原因有任何想法吗?

追踪路线

    from("jms.tracer")
        .id("openlink-input-trace")
        .process(new Processor()
        {
            @Override
            public void process(Exchange exchange) throws Exception 
            {
                System.out.println("test");
            }
        });

Spring JMS 配置

<bean id="tracerQueueConnFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiTemplate" ref="jndiTemplate" />
    <property name="jndiName" value="${jms.openlink-tracer-queue-qcf.jndiname}" />
</bean>

<bean id="proxyTracerQueueConnFactory" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">
    <property name="targetConnectionFactory" ref="tracerQueueConnFactory" />
    <property name="username" value="${jms.openlink-tracer-queue-qcf.username}" />
    <property name="password" value="${jms.openlink-tracer-queue-qcf.password}" />
</bean>

<bean id="jmsTrace" class="org.apache.camel.component.jms.JmsComponent">
    <property name="connectionFactory" ref="proxyTracerQueueConnFactory" />
    <property name="destinationResolver" ref="jndiResolver" />
</bean>

Spring 端点配置

    <endpoint id="jms.tracer"
              uri="jmsTrace:queue:${jms.openlink-tracer-queue.jndiname}" />

编辑:

这是使用 TibcoEMS 作为代理。

我可以在日志中看到以下内容:

[2012 年 7 月 11 日 11:39:46] 调试 [] (AbstractPollingMessageListenerContainer.java:313) - 收到消息 来自消费者的 [class com.tibco.tibjms.TibjmsObjectMessage] 类型 会话的 [QueueReceiver[queue=f2b.prototype.tracer.queue]] [com.tibco.tibjms.TibjmsSession@16c143]

[2012 年 7 月 11 日 11:39:46] 调试 [] (EndpointMessageListener.java:72) - 端点[jmsTrace://queue:/user_dev/db/us/GTO/CIFramework/S001DEV/f2b.prototype.tracer.queue:queue] 消费者收到 JMS 消息:ObjectMessage={ Header={ JMSMessageID={ID:db_us_GTO_CIFramework_S001DEV.20D84FDA9F769B1A97:3} JMSDestination={队列[f2b.prototype.tracer.queue]} JMSReplyTo={null} JMSDeliveryMode={PERSISTENT} JMSRedelivered={false} JMSCorrelationID={null} JMSType={null} JMSTimestamp={Wed Jul 11 10:53:48 CDT 2012} JMSExpiration={0} JMSPriority={4} } 属性={ } 对象={com.db.cif.tracer.jpa.model.JpaTraceEventMessage@1dfe3f} }

[2012 年 7 月 11 日 11:39:46] 调试 [] (JmsTemplate.java:464) - 正在执行 JMS Session 回调:com.tibco.tibjms.TibjmsSession@16c143

[2012 年 7 月 11 日 11:39:46] 调试 [] (JmsConfiguration.java:266) - 发送 JMS 消息发送到:Queue[f2b.prototype.tracer.queue] 与消息: ObjectMessage={ 标头={ JMSMessageID={null} JMSDestination={null} JMSReplyTo={null} JMSDeliveryMode={PERSISTENT} JMSRedelivered={false} JMSCorrelationID={null} JMSType={null} JMSTimestamp={0} JMSExpiration={0} JMSPriority={4} } 属性={ } 对象={com.db.cif.tracer.jpa.model.JpaTraceEventMessage@16119a} }

测试

[2012 年 7 月 11 日 11:39:52] 调试 [] (AbstractPollingMessageListenerContainer.java:313) - 收到消息 来自消费者的 [class com.tibco.tibjms.TibjmsObjectMessage] 类型 会话的 [QueueReceiver[queue=f2b.prototype.tracer.queue]] [com.tibco.tibjms.TibjmsSession@16c143]

[2012 年 7 月 11 日 11:39:52] 调试 [] (EndpointMessageListener.java:72) - 端点[jmsTrace://queue:/user_dev/db/us/GTO/CIFramework/S001DEV/f2b.prototype.tracer.queue:queue] 消费者收到 JMS 消息:ObjectMessage={ Header={ JMSMessageID={ID:db_us_GTO_CIFramework_S001DEV.20D84FDA9F769B1A97:4} JMSDestination={队列[f2b.prototype.tracer.queue]} JMSReplyTo={null} JMSDeliveryMode={PERSISTENT} JMSRedelivered={false} JMSCorrelationID={null} JMSType={null} JMSTimestamp={Wed Jul 11 10:53:50 CDT 2012} JMSExpiration={0} JMSPriority={4} } 属性={ } 对象={com.db.cif.tracer.jpa.model.JpaTraceEventMessage@1d81bc5} }

[2012 年 7 月 11 日 11:39:52] 调试 [] (JmsTemplate.java:464) - 正在执行 JMS Session 回调:com.tibco.tibjms.TibjmsSession@16c143

[2012 年 7 月 11 日 11:39:52] 调试 [] (JmsConfiguration.java:266) - 发送 JMS 消息发送到:Queue[f2b.prototype.tracer.queue] 与消息: ObjectMessage={ 标头={ JMSMessageID={null} JMSDestination={null} JMSReplyTo={null} JMSDeliveryMode={PERSISTENT} JMSRedelivered={false} JMSCorrelationID={null} JMSType={null} JMSTimestamp={0} JMSExpiration={0} JMSPriority={4} } 属性={ } 对象={com.db.cif.tracer.jpa.model.JpaTraceEventMessage@3b09b4} }

【问题讨论】:

    标签: apache-camel spring-jms


    【解决方案1】:

    我知道我在做一些愚蠢的事情!

    我仔细查看了跟踪消息,并意识到在我的上下文中启用了跟踪,从而导致跟踪我的跟踪器路由,从而形成了一个不错的无限循环。

    【讨论】:

      猜你喜欢
      • 2021-09-21
      • 1970-01-01
      • 2012-01-13
      • 2012-11-02
      • 2010-12-12
      • 1970-01-01
      • 2016-07-11
      • 2019-05-04
      • 1970-01-01
      相关资源
      最近更新 更多