English 中文(简体)
在你已经拥有服务器和BizTalk时使用MSMQ
原标题:Using MSMQ when you already have SQL Server and BizTalk

简单问题: 是否有理由将MSMQ添加到一个已有多个BizTalk和服务器点子的现有信息化框架?

背景: 我们有一个处理账单的传闻框架,现在装载量相当低(每天最多10 000次),但正在上升。 我们利用BizTalk和服务器进行所有处理,我们开始在将(同步)输入数据库(NOTBizTalk电文箱)时,将几个时段加以压缩。 我们的一位高级方案家建议,我们利用MSMQ来节省(经常地)数据,以便日后进行时间分配和处理;他设计的解决方案是行之有效的,而且即将部署,但我仍然想知道,这是否是正确的决定,因为我们可能利用BizTalk公司本身或服务器服务经纪人(SB)。 关于这三种技术的讨论很多,但是,它们通常要选择一种技术而不是另一种技术,我没有看到任何已经拥有BizTalk和SSSB的人的情况,决定增加MSMQ。 就我们的情况而言,我认为它没有必要地补充我们的技术,但这可能是我自己的偏见(和无知),因为我知道SSSB更好,而且从来没有像MSMQ那样做。 你认为什么?

问题回答

你们应该指出,为什么你的插入要花这么长时间,而是固定下来。 1万/日是无<>,用于一个像样的机车库服务器。

EDIT:

添加任何种类的焦土加工是铺设公路的一种形式。 假定你插入一分钟(我认识到,这或许不会,只是为了辩论。) 如果你加入你的话,你只能每天处理1440个插入物,直到你开始落后。 你们总是需要加快最终插入。

Now with that said, I don t think that there is any compelling benefit in this case of using MSMQ over SSSB (or vice-versa). It could be argued that with MSMQ you need to hand-code a listener daemon that does your inserts, whereas with SSSB you have that automatically within the database. On the other hand, with MSMQ you are offloading the storage of the messages to another server, potentially offloading some of the immediate stress from your SQL Server.

我想说,如果你只是想从网上接通数据库,那么你就可以与BizTalk(例如,通过创建“排线”东道方——从而创建新的东道方)。

如果ms鱼确实是排在BizTalk的边缘。 各种系统可以要求BizTalk不关心BizTalk本身的存在。 在BizTalk再次提供之前,这些电文将hang。

I m with Hugh - we ve used MSMQ (and IBM MQ Series) successfully with BizTalk for asynchronous, transactional traffic (mostly financial transactions, where the need for traceable, reliable, ACID type message delivery outweighs any need for transaction latency).

我们发现MSMQ的好处是:

  • Transactional delivery - messages can be pulled off by the destination system and inserted into SQL under a 2 phase UOW.
  • Hugh s point about delivery decoupled from system availability (and you still have the Dead Letter Queue if the target system is down for an unreasonable period of time)
  • Load balancing / throttling - a destination system can protect against overzealous message delivery by pulling messages off the queue at a more even pace.
  • Auditing - using the journalling on MSMQ allows an additional layer of tracing.
  • Also note that there is a WCF adapter for MSMQ - no requirement for custom listeners.

我们通常不直接从BizTalk打电话。

  • For reading this equates to polling the database in the hope that there are messages ready to be sent (this can create issues relating to frequency of calling, i.e. redundancy, induced latency, and load on SQL, and contention - e.g. polling while data is being added by an app to the tables. We would rather have each app decide when to submit messages to BizTalk / ESB.
  • for write operations, unless data is offloaded into a staging area for processing by destination apps, it can lead to much of the business processing moving into BizTalk (i.e. validation, applying business rules etc) - IMHO this is too fine-grained for BizTalk. And as you ve found, it can be hard to control the rate of message delivery into SQL (e.g. unless you start using Singleton Orhcestrations etc), which again causes locking / contention issues.




相关问题
Export tables from SQL Server to be imported to Oracle 10g

I m trying to export some tables from SQL Server 2005 and then create those tables and populate them in Oracle. I have about 10 tables, varying from 4 columns up to 25. I m not using any constraints/...

SQL server: Can NT accounts be mapped to SQL server accounts

In our database we have an SQL server account that has the correct roles to access some of the databases. We are now switching to windows authentication and I was wondering if we can create a NT user ...

SQL Server 2000, ADO 2.8, VB6

How to determine if a Transaction is active i.e. before issuing Begin Transaction I want to ensure that no previous transaction are open.. the platform is VB6, MS-SQL Server 2000 and ADO 2.8

热门标签