RE: Message Subscription

From: Michael (Michael_at_discussions.microsoft.com)
Date: 02/03/05


Date: Wed, 2 Feb 2005 16:09:05 -0800

Hi Stephen,

I tried the untyped message solution. I have made the outbound and inbound
port to MQ use XmlDocument, just as the MQ Adapter SDK sample does. I also
use the PassThru pipeline on the MQ receive port so BizTalk won't try and
resolve the MessageType. I still get the same error in the event log. I
look in the subscription viewer and I see my orchestration with two
properties, ReceivePortID and MQMD_CorrelId.

I look at the context of the suspended message and the ReceivePortId is
promoted and set to the same value I see in orchestration via the
subscription viewer. The suspended message context also has the promoted
MQMD_CorrelId property which again matches the value I see in the
orchestration via subscription viewer.

If the orchestration is there, the receive port id matches up, and the
correlation value matches, I don't understand why I'm getting subscription
errors?

Note because I am using the PassThru pipeline the MessageType is empty.
Does this need to be XmlDocument? If I use the XmlReceive pipeline the
MessageType is set to the root node name and I get the entry in the event log
indicating that multiple schema are deployed and the message cannot be
resolved using this MessageType.

Can you please elaborate on the direct message binding solution. I
understand binding the port to the messagebox. Does this mean this
orchestration will receive every message that is placed in the message box
and I should be doing some routing based on the InboundTransportLocation
after the receive? Can you please explain a little further the comment "set
a custom flag to processes". I'm not sure what you mean by this.

Thanks for you help,

"Stephen W. Thomas" wrote:

> Hello.
>
> Have you used the Subscription Viewer in the SDK to check and see what
> subscriptions are available?
>
> What message type did you define in your Orchestration Port? I think that
> is what is causing your problem. Have you thought of accepting the messages
> as an Untyped Message? That is, as an XmlDocument. You can always cast it
> later on to a schema if you needed to.
>
> You might also want to look at the message context of your failed messages.
> Just to see what properties are there and that values they have.
>
> Some other ideas might be to do direct message box binding on the Receive
> Port. Then, use BTS. InboundTransportLocation for routing. Just make sure
> you change this setting inside the Orchestration or set a custom flag to
> processes otherwise when you send the messages it will match the subscription
> again.
>
> Hope this helps.
>
> Stephen W. Thomas
> http://www.geekswithblogs.net/sthomas
>
>
> "Michael" wrote:
>
> > I have two schema, both schema share the same root node name and neither has
> > a target namespace. Note they're not our schema and we must be able to use
> > them in there current form. Ok, its a very simple orchestration, in fact
> > almost identical to the solution in that comes with the MQ Adapter SDK. The
> > only difference being the ports in my orchesrtation are based on the schema
> > type and not XmlDocument. I'm getting the following errors, has anyone else
> > solved these problems?
> >
> > If we run the solution with an XmlReceive on the receive from MQ port then
> > we get the following entry in the event log.
> >
> > "There was a failure executing the receive pipeline:
> > "Microsoft.BizTalk.DefaultPipelines.XMLReceive" Source: "XML disassembler"
> > Receive Location: "MQS://MQServer/QMgr/QUEUE1" Reason: The disassembler
> > cannot retrieve the document specification by using this type: "msg". Either
> > the schema is not deployed correctly, or more than one schema is deployed for
> > the same message type."
> >
> > That makes sense as both my deployed schema share the same root node name
> > and neither has a namespace. After hunting around a bit I found a solution
> > that involves creating a pipeline, adding an xml disassembler, and explicity
> > specifying the fully qualified name of the schema in the Document schema
> > collection. I have also set the allow unrecognized message property to true.
> > I implemented this solution and receive the following entry in the event
> > log.
> >
> > "The Messaging engine failed to process a message submitted by
> > adapter:MQSeries Source URL:MQS://MQServer/Qmgr/QUEUE1. Details:Could not
> > find a matching subscription for the message. . This error occurs if the
> > subscribed orchestration schedule or send port has not been started, or if
> > some of the message properties necessary for subscription evaluation have not
> > been promoted. Please refer to Health and Activity Tracking tool for more
> > detailed information on this failure"
> >
> > I looked around for a solution to this problem. One being to build a custom
> > pipeline component and promote a message type. So I assigned a unqiue
> > namespace to our schema and built the disassembler to promote the
> > "MessageType" context property. I still got the same error.
> >
> > Any ideas on what else I can try?



Relevant Pages

  • Re: Subscription problem BTS 2006
    ... Have you tried not specifying the schema on the XmlDisassembler. ... I do have an XmlDisassembler in my custom pipeline and it's Documents ... The orchestration will be subscribing to the MessageType - this is ... You can add additional filters to the subscription by setting filters ...
    (microsoft.public.biztalk.general)
  • Re: Subscription problem BTS 2006
    ... I do have an XmlDisassembler in my custom pipeline and it's Documents ... I also have an XML validator with the same schema. ... The orchestration will be subscribing to the MessageType - this is taken ... You can add additional filters to the subscription by setting filters on ...
    (microsoft.public.biztalk.general)
  • RE: Message Subscription
    ... Have you used the Subscription Viewer in the SDK to check and see what ... What message type did you define in your Orchestration Port? ... Note they're not our schema and we must be able to use ...
    (microsoft.public.biztalk.general)
  • Re: How to call a web service that takes no input
    ... It is connected to a port. ... and I am not aware of any subscription ... The orchestration will only start on receipt of a message. ... One way would be to create a dummy input and send to Receive shape. ...
    (microsoft.public.biztalk.general)
  • Re: Subscription problem BTS 2006
    ... Do you have "Routing enabled for failed messages" set on the receive port ... Have you tried not specifying the schema on the XmlDisassembler. ... The orchestration will be subscribing to the MessageType - this is taken ... You can add additional filters to the subscription by setting filters on ...
    (microsoft.public.biztalk.general)

Loading