Wordle

Wordle: BTS3

Wednesday, April 30, 2008

Semaphores vs. Singleton in order to manage limited resources in BizTalk

Everybody needs semaphores. In the last couple of months I myself encounter 3 times the need to use semaphores.

Since my primary job is BizTalk – I need a semaphore solution for BTS.

Searching the net for open source semaphore solution results with such solutions, but (the best I found) limited to the current server running the application.

Since my production environment of BizTalk servers holding more than one server, these solutions don't work for me.

BizTalk has an option to use singleton as a mechanism to control resources. This is how to do it using singleton:

  • Create orchestration A (Main) to handle the process
    • When need to use the limited resource do that
      • Send a message using direct binding to orchestration B
      • Receive response message from orchestration B
    • Continue the business process required in
  • Create orchestration B
    • Create a correlation set that will be used to identify the similarity between the messages arrives to this orchestration to make it unique BizTalk.
    • Receive the request from orchestration A and initial the correlation set.
    • Do the resource limited operation
    • Create a loop
      • Add a listen shape
        • On one hand Receive another message
        • On second hand add a timeout
      • If timeout occurred exist loop, and leave orchestration
      • If message received handle (again) the limited resource operation

(Detailed instructions can be found here: http://aspalliance.com/1208_Singleton_Orchestration_in_BizTalk_Server.3)

Here is a picture of orchestration demonstrating this solution:


Challenges when using this way:

  1. Unable to limit the number of resources in case the number of resources is larger than 1.
  2. There is no easy way to trace direct binding ports, and therefore to debug errors in the mechanism.
  3. There is no accurate time to leave the singleton orchestration (how much time to set in the timeout hand).
  4. It might cause a zombies message (although it pretty rear) when a message coming to the MessageBox after timeout event already fired and orchestration still did not complete termination.


We found out a different way to handle the limited resource problem and to offer a solution for it.

How about using an adapter to get a semaphore?

In this way the solution is very simple.

Once configure the adapter, many resources can be managed, and number of items per resource can be defined.

Construct a message including the semaphore name and number of resource items need to be obtained (not only 1, but 1 is the default), and send a message to the adapter to get the semaphore. After getting it do the business process required the resource and then release the resource by sending the same message again to the adapter.

The next picture demonstrates the same operation using the semaphore adapter.


Shimshon Fishler


Monday, April 14, 2008

BizTalk Best Practice Analyzer v1.1 RTM

Hello,

I've found a great tool in a blog of an employee of Microsoft Israel named

The tool overview (from MS site)

The BizTalk Server 2006 Best Practices Analyzer performs configuration-level verification by reading and reporting only. The Best Practices Analyzer gathers data from different information sources, such as Windows Management Instrumentation (WMI) classes, SQL Server databases, and registry entries. The Best Practices Analyzer uses the data to evaluate the deployment configuration. The Best Practices Analyzer does not modify any system settings, and is not a self-tuning tool.

The blog post located here: http://blogs.microsoft.co.il/blogs/adlaim/archive/2008/04/14/biztalk-best-practice-analyzer-v1-1-rtm.aspx

The tool can be downloaded from there: http://www.microsoft.com/downloads/details.aspx?familyid=dda047e3-408e-48ba-83f9-f397226cd6d4&displaylang=en

Sunday, April 13, 2008

MOSS2007 Workflow and BizTalk2009

I found out an artical about MOSS 2007 workflow and BizaTalk 2009

Here is a link to: http://blogs.microsoft.co.il/blogs/adlaim/archive/2008/04/01/moss2007-workflow-and-biztalk2009.aspx

שמשון

Shimshon Fisher
Gaurdian

Welcome to the BizTalk Blog

Hello everybody,

My name is Shimshon Fishler and Current I'm the manager of the integration group at Guardian information systems (www.g-s.co.il).

We are located at Petah Tikva, a large city in Israel, near Tel-Aviv.

This blog is about BizTalk useful stuff.

Guardian is part of Malam-Team group which is (in these days) the second large IT Company in Israel.

Guardian holds some major certification by Microsoft in the area of Dynamics CRM, SharePoint and MOSS.

The Guardian integration group is willing to help you solve any of your integration issues. Don't hesitate to contact me at ShimshonF@g-s.co.il.


Using Separate BTS Projects for Schemas and Maps

As we all know from BTS basics tutorials a developer should split the BTS solutions into at least these parts:

  • BTS project containing the Schemas.
  • BTS project containing the Maps, Orchestrations and other stuff.

This post is about changing this list.

In one of my projects we encounter a big performance issue in the testing environment (lucky me J ).

As we deep into it, we found the issue is about the large amount of maps involved in the project.

We found out that there is a memory leak from the BTS service running this application, consuming more and more memory up to a limit (which is much less than the server physical memory). When reaching this unexplained limit, the service stops serving any more requests.

After involving our support, we got some answers:

  • There is an issue with way the XSLT runtime engine handles the map inline scripts, causing this issue.
  • In order to avoid it, we recommended by the support to split the maps to a separate project other from the BTS stuff.

Keep in mind that doing it is a big mess when you already have the code running so keep it in your mind to the next project (or the current one if you must due to circumstances).

The Schemas project should include beside the schemas, the web reference, thus it's include more the schemas for the web reference.

By the way, splitting the projects parts in my case, solve the performance issue and reduce the memory consumption approximately by 60%.

Shimshon.