Rabbitmq 在Mule中轮询并推送队列中的每条记录后解析多条记录

Rabbitmq 在Mule中轮询并推送队列中的每条记录后解析多条记录,rabbitmq,mule,amqp,mule-studio,Rabbitmq,Mule,Amqp,Mule Studio,到目前为止,当我使用查询轮询数据库时,它将在指定的持续时间内获取多条记录。问题是,这些多条记录将作为单个消息推送到队列中。如何将记录集中的每条记录作为单个消息推送到队列中?正如您所解释的,JDBC端点正在获取一组记录,并将它们作为单个消息发送到队列中。解决这个问题的方法有两种 为每个消息处理器使用Mule。这有助于遍历集合对象,并将每个项作为一条消息进行处理 使用Mule的集合拆分器迭代记录集合 选项1的解决方案如下图所示 此流的代码如下所示 <flow name="JDBC-For-E

到目前为止,当我使用查询轮询数据库时,它将在指定的持续时间内获取多条记录。问题是,这些多条记录将作为单个消息推送到队列中。如何将记录集中的每条记录作为单个消息推送到队列中?

正如您所解释的,JDBC端点正在获取一组记录,并将它们作为单个消息发送到队列中。解决这个问题的方法有两种

  • 为每个消息处理器使用Mule。这有助于遍历集合对象,并将每个项作为一条消息进行处理
  • 使用Mule的集合拆分器迭代记录集合
  • 选项1的解决方案如下图所示

    此流的代码如下所示

    <flow name="JDBC-For-Each-JMS-Flow" >
        <jdbc-ee:inbound-endpoint queryKey="SelectAll" mimeType="text/javascript"  queryTimeout="500000" pollingFrequency="1000" doc:name="Database">           
            <jdbc-ee:query key="SelectAll" value="select * from users"/>            
        </jdbc-ee:inbound-endpoint>
        <foreach doc:name="For Each" collection="#[payload]" >
            <jms:outbound-endpoint doc:name="JMS"/>
        </foreach>
        <catch-exception-strategy doc:name="Catch Exception Strategy"/>
    </flow>
    
    
    
    注:这是一个样本流

    希望这有帮助