我是Biztalk的新手,我对消息的状态有疑问。例如,我的应用程序(A)从客户端读取输入,格式化并将其放置到MQ(IBM)。Biztalk服务器将从我的MQ读取消息,并可能将其发送到其他客户端(B)。我的问题是,如果我的应用程序(A)和MQ服务器在将消息推送到Biztalk后出现故障。。这条信息会仍然存在于Biztalk中,还是会变得不和谐?
如果biztalk在拥有消息后关闭,结果会是什么?它还会保存信息吗?
如果biztalk拥有消息,但使用者应用程序(B)关闭,结果会是什么?会说话吗
保持消息直到应用程序(B)在消息启动后读取消息?
对于专家来说,这可能是一个简单的问题,但作为一个新手,我很担心。谢谢你提前澄清。
如果应用程序A成功地将消息推送到队列,然后崩溃,则消息仍在队列中。此时,应用程序A处于什么"状态"并不重要,消息现在归WMQ所有,并将被传递到目的地。
BizTalk仍将读取该消息,完全不知道应用程序A可能已崩溃。
我的问题是,如果我的应用程序(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订阅架构:http://msdn.microsoft.com/en-us/library/aa560414.aspx