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也是一個好主意,以確保最佳性能。