安慰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.JMSConsumer
here的来源。
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也是一个好主意,以确保最佳性能。