Thursday, October 2, 2014

First ESB Itinerary Project

To create an itinerary :
1. Create Dynamic send port with following filters -
Microsoft.Practices.ESB.Itinerary.Schemas.ServiceName == XYZ And
Microsoft.Practices.ESB.Itinerary.Schemas.ServiceState == Pending  And
Microsoft.Practices.ESB.Itinerary.Schemas.ServiceType == Messaging

Select pipeline as - Itinerary Send PassThrough

2. Create Itinerary named as HelloWorld.itinerary
Refer - http://geekswithblogs.net/BizTalkAndOtherTechs/archive/2013/05/21/152969.aspx
 http://geekswithblogs.net/BizTalkAndOtherTechs/archive/2013/05/22/152978.aspx

3. Select itinerary on receive location – Select “ItinerarySelectReceive” pipeline and open pipeline properties to configure following:
ItineraryFactKey Resolver.Itinerary
ResolverConnectionString ITINERARY://name=HelloWorld;

3. Create Orchestration to be used as service
3.1 Develope .odx
3.2 Register it in ESB.config as service


Commonly faced errors and resolutions:


ErrorResolution
There was a failure executing the receive pipeline: "Microsoft.Practices.ESB.Itinerary.Pipelines.ItinerarySelectReceive, Microsoft.Practices.ESB.Itinerary.Pipelines, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Source: "ESB Itinerary Selector" Receive Port: "ReceiveXml" URI: "C:\Users\XYZ\*.xml" Reason: Parameter name cannot be null or an empty string.
Parameter name: key 
The issue was that I had the BRI string like this: BRI:// instead of BRI:\\  in the pipeline component's configuration.  The latter is the correct way.

Also, verify in your on-ramp (receive location) that you have the ItineraryFactKey property set to "Resolver.Itinerary".

ESB Itinerary Error: The published message could not be routed because no subscribers were found

 http://wlopezm.blogspot.co.uk/2012/04/esb-itinerary-error-published-message.html