如果我的应用程序在向biztalk发送消息后关闭,我的MQ会发生什么

时间:2014-10-09 11:41:24

标签: biztalk communication mq

我是Biztalk的新手,我对我的信息状态有疑问。例如,我的应用程序(A)从客户端读取输入,格式化并将其放置到MQ(IBM).Biztalk服务器将从我的MQ读取消息并可能将其发送到其他客户端(B)。我的问题是,如果我的应用程序(A)和我的MQ服务器在将消息推送到Biztalk后关闭了,那么消息仍然存在于Biztalk中还是会被丢弃?

如果拥有邮件后biztalk已关闭,结果如何?它还会保留信息吗?

如果biztalk拥有该消息但消费者应用程序(B)已关闭,结果如何?将biztalk将

保留消息,直到应用程序(B)一旦启动就读取消息?

对于专家来说,这可能是一个简单的问题,但作为一个新手我很担心。感谢您提前澄清。

2 个答案:

答案 0 :(得分:0)

如果应用程序A成功将消息推送到队列,然后崩溃,则消息仍在队列中。在那一点上,什么'状态'并不重要。应用程序A在,该消息现在由WMQ拥有,并将传递到目的地。

BizTalk仍会阅读该消息,完全不知道应用程序A可能已崩溃。

答案 1 :(得分:0)

  

我的问题是如果我的应用程序(A)和我的MQ服务器失效了   将消息推送到Biztalk

一旦消息在队列中,应用程序A就不再能控制该消息。因此,如果A崩溃,则推送到队列的消息不会发生任何事情。

  

如果拥有邮件后biztalk已关闭,结果如何?将   它仍然保留着信息?

Microsoft BizTalk Server实际上在SQL Server中安装了几个数据库,其中一个数据库称为MessageBox数据库,负责路由,排队,实例管理和各种其他任务。

当BizTalk Server收到消息时,它会处理管道中的消息,并将消息放入MessageBox数据库中。当进程订阅此消息时,MessageBox数据库将消息发送到进程,进程又处理主机实例上的消息。

MessageBox数据库保存主机实例的状态(以及其他数据)。因此,如果您的主机实例崩溃或更糟糕,Biztalk服务器崩溃,实例的状态将在该数据库中得到保护。当Biztalk恢复时,主机实例将根据MessageBox数据库上的信息恢复。

在回答您的问题时,在这种情况下,Biztalk服务器中的消息永远不会丢失。

  

如果biztalk拥有该消息而不是消费者,结果是什么?   申请(B)下降?将biztalk将消息保持到   应用程序(B)一旦启动就读取消息?

这实际上可以在Biztalk服务器中配置。您可以将其配置为重试发送请求(基于重试次数,时间等)。

您可以在以下链接(MSDN Library)中找到有关此主题的更多信息:

MessageBox数据库:http://msdn.microsoft.com/en-us/library/aa562016.aspx

Biztalk数据库:http://msdn.microsoft.com/en-us/library/aa578342.aspx

Biztalk Subscrition Architecture:http://msdn.microsoft.com/en-us/library/aa560414.aspx