安慰NIFI JMSConnectionFactoryProvider解除绑定/绑定

问题描述:

使用的Apache NiFi的JNDI连接工厂提供从http://dev.solace.com/integration-guides/nifi/安慰NIFI JMSConnectionFactoryProvider解除绑定/绑定

我试图从消费(运行安慰JMS)是看到客户端(NiFi ConsumeJMS处理器)消息不断解除绑定该网站/绑定到队列的原因是“客户端发出解除绑定”。客户端无法使用所有数据,导致“邮件过期丢弃”。什么是导致解除绑定/绑定,我该怎么做才能解决这个使用这个Nifi处理器。谢谢

Apache NiFi正在关闭MessageConsumer后消费每封邮件。您可以参考org.apache.nifi.jms.processors.JMSConsumerhere的来源。

public void consume(final String destinationName, final ConsumerCallback consumerCallback) { 
    this.jmsTemplate.execute(new SessionCallback<Void>() { 
     @Override 
     public Void doInJms(Session session) throws JMSException { 
       ... 
       JmsUtils.closeMessageConsumer(msgConsumer); 

Solace JMS API的默认行为是向消费者传递一批消息。但是,由于NiFi在消费1条消息后重复关闭连接,因此会导致剩余的批量重新传递到下一个创建的消费者。

我相信您必须在端点上启用了“Max Redelivery”设置,并且超过了“过期丢弃”这些消息的最大重传数量。

此处的解决方案是将端点上的“Max Perivered Unacked Messages Per Flow”每个流量的最大传送消息设置为1,以确保只能传送1条消息。

将连接工厂中的“AD窗口大小”消息接收属性调整为1也是一个好主意,以确保最佳性能。