我通过MSMQ适配器从BizTalk向MSMQ队列发送消息。
我需要确认消息已被完全接收(由接收方从队列中接收)。无论我在MSMQ传输属性中发送何种确认类型,都无法实现该功能。
我知道完全接收确认取决于消息的TTL(生存时间)。但是这不能在MSMQ传输属性中设置。只有超时,但它仅适用于到达队列(这是MSDN关于超时的说明:“指定等待消息到达目标队列的最长时间。仅当使用事务时才适用。”)。我将此超时属性设置为10秒。
如果我将Ack类型设置为FullReceive,则仅在从队列中提取消息时才会收到确认。但是我从未收到过NACK(显然是因为TTL尚未到期)。我认为默认的TTL为4小时。我还使用了其他的Ack类型,如NegativeReceive等,但如果消息未从队列中提取,就没有给我NACK。
我可以通过WCF-NetMSMQ适配器实现这一点,其中您可以发送TTL值,并在其过期时获得NACK。
有人知道如何通过MSMQ适配器使FullReceive正常工作,并在10秒内未从队列中接收到消息时收到NACK吗?
我需要确认消息已被完全接收(由接收方从队列中接收)。无论我在MSMQ传输属性中发送何种确认类型,都无法实现该功能。
我知道完全接收确认取决于消息的TTL(生存时间)。但是这不能在MSMQ传输属性中设置。只有超时,但它仅适用于到达队列(这是MSDN关于超时的说明:“指定等待消息到达目标队列的最长时间。仅当使用事务时才适用。”)。我将此超时属性设置为10秒。
如果我将Ack类型设置为FullReceive,则仅在从队列中提取消息时才会收到确认。但是我从未收到过NACK(显然是因为TTL尚未到期)。我认为默认的TTL为4小时。我还使用了其他的Ack类型,如NegativeReceive等,但如果消息未从队列中提取,就没有给我NACK。
我可以通过WCF-NetMSMQ适配器实现这一点,其中您可以发送TTL值,并在其过期时获得NACK。
有人知道如何通过MSMQ适配器使FullReceive正常工作,并在10秒内未从队列中接收到消息时收到NACK吗?