【问题标题】:How to give WSO2 time interval for consuming messages如何给 WSO2 时间间隔来消费消息
【发布时间】:2019-01-24 21:22:08
【问题描述】:

我需要配置 wso2 以使用来自 activemq 的时间间隔一一消费消息。有没有办法在给定的时间只消费一条消息?

当activemq上有很多消息时,WSO2会消费所有消息并调用后端服务。后端服务不处理所有传入的消息。

我创建了一个 jms 入站端点和一个代理服务,但我没有找到属性或方法。

入站端点:

    <?xml version="1.0" encoding="UTF-8"?>
<inboundEndpoint xmlns="http://ws.apache.org/ns/synapse"
                 name="activemqDeneme"
                 sequence="esb-QueueSQ"
                 onError="conf:/sequences/esb.faultSQ.xml"
                 protocol="jms"
                 suspend="false">
   <parameters>
      <parameter name="interval">60000</parameter>
      <parameter name="sequential">false</parameter>
      <parameter name="coordination">true</parameter>
      <parameter name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
      <parameter name="java.naming.provider.url">tcp://localhost:6052</parameter>
      <parameter name="transport.jms.ConnectionFactoryJNDIName">QueueConnectionFactory</parameter>
      <parameter name="transport.jms.ConnectionFactoryType">queue</parameter>
      <parameter name="transport.jms.Destination">queue_request</parameter>
      <parameter name="transport.jms.SessionTransacted">false</parameter>
      <parameter name="transport.jms.SessionAcknowledgement">AUTO_ACKNOWLEDGE</parameter>
      <parameter name="transport.jms.CacheLevel">3</parameter>
      <parameter name="transport.jms.SubscriptionDurable">false</parameter>
      <parameter name="transport.jms.ContentType">application/json</parameter>
      <parameter name="transport.jms.SharedSubscription">false</parameter>
   </parameters>
</inboundEndpoint>

代理服务:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="Queue"
       startOnLoad="true"
       statistics="disable"
       trace="disable"
       transports="jms">
   <target>
      <inSequence>
         <sequence description="call activemq" key="esb-QueueSQ"/>
      </inSequence>
      <outSequence/>
      <faultSequence/>
   </target>
   <parameter name="transport.jms.Destination">queue_request</parameter>
   <parameter name="transport.jms.ContentType">
      <rules xmlns="">
         <jmsProperty>contentType</jmsProperty>
         <default>application/json</default>
      </rules>
   </parameter>
   <description/>
</proxy>

【问题讨论】:

    标签: wso2 activemq


    【解决方案1】:

    你试过了吗

      <parameter name="sequential">true</parameter>
    

    当设置为 false 时,它​​可能会并行消耗它们。之后您的序列也需要是连续的。

    【讨论】:

    • 我试过了,但它仍然会在一秒钟内消耗很多消息,比如 6 条消息。也许它是按顺序消费的,但我需要的是它应该在一秒钟内消费一条消息。
    • 那我猜你的序列“esb-QueueSQ”不是连续的(例如它是否执行调用,在这种情况下你可以尝试添加一个参数blocking =“true”)?
    • 谢谢尼古拉斯。有一个电话没有 bloking="true"。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 2016-03-06
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    相关资源
    最近更新 更多