Forum Replies Created
-
AuthorPosts
-
It turns out the issue has something to do with the correlating on the SOAP headers. I built another two orchestrations that were basically identical – except I correlated on an element in the message, not on a SoapHeader.
Neal
This is an existing system, and we have to work with their existing framework.
Here is the exact error I’m getting. Instead of just getting the \”not able to find subscriber\” that you normally get, I get 3 exceptions:
1) PersistenceException
2) PersistenceItemException
3) PublishMessageException.Several posts have suggested that the PeristenceItemException can be caused by an unenlisted orch, but my Orch-A and Orch-B are both enlisted, and Orch-B finishes – even though the exception below is from Orch-B (whose real name is Compassion.BizTalk.BusinessProcesses.Constituent.orchServiceAgentSim).
Event Type: Error
Event Source: XLANG/s
Event Category: None
Event ID: 10034
Date: 1/24/2006
Time: 11:23:26 AM
User: N/A
Computer: USGDPWV81NB
Description:
Uncaught exception terminated service Compassion.BizTalk.BusinessProcesses.Constituent.orchServiceAgentSim(86e37f34-27f9-4cc5-469d-296639ae7331), instance 56ce3b91-599c-4762-92c1-6e1643eb7970Exception occurred when persisting state to the database.
Exception type: PersistenceException
Source: Microsoft.XLANGs.BizTalk.Engine
Target Site: Void Commit()
Help Link:
Additional error information:A batch item failed persistence Item-ID 227b434c-ef4b-4ed4-8d53-9fb5634faa8b OperationType MAIO_CommitBatch Status -1061151998 ErrorInfo The published message could not be routed because no subscribers were found. Please use the Health and Activity Monitoring (HAT) tool to diagnose this situation. .
Exception type: PersistenceItemException
Source:
Target Site:
Help Link:
Additional error information:Failed to publish (send) a message in the batch. [b:5cad729eb8]This is usually because there is no one expecting to receive this message. The error was The published message could not be routed because no subscribers were found. [/b:5cad729eb8] Please use the Health and Activity Monitoring (HAT) tool to diagnose this situation. with status -1061151998.
Exception type: PublishMessageException
Source:
Target Site:
Help Link:
Additional error information:Exception occurred when persisting state to the database.
Exception type: PersistenceException
Source: Microsoft.XLANGs.BizTalk.Engine
Target Site: Void Commit(Microsoft.BizTalk.Agent.Interop.IBTMessageBatchEx[], Microsoft.XLANGs.Core.Segment, Microsoft.BizTalk.Agent.Interop.IBTOperationStatus ByRef)
Help Link:
Additional error information:A batch item failed persistence Item-ID 227b434c-ef4b-4ed4-8d53-9fb5634faa8b OperationType MAIO_CommitBatch Status -1061151998 ErrorInfo [b:5cad729eb8]The published message could not be routed because no subscribers were found[/b:5cad729eb8]. Please use the Health and Activity Monitoring (HAT) tool to diagnose this situation. .
Exception type: PersistenceItemException
Source:
Target Site:
Help Link:
Additional error information:Failed to publish (send) a message in the batch.[b:5cad729eb8] This is usually because there is no one expecting to receive this message. The error was The published message could not be routed because no subscribers were found. [/b:5cad729eb8] Please use the Health and Activity Monitoring (HAT) tool to diagnose this situation. with status -1061151998.
Exception type: PublishMessageException
Source:
Target Site:
Help Link:
Additional error information:Neal
I wrote a simple two orchestration correlation demo to simulate a larger problem we were having at client.
So basically Orch-A sends a message, Orch-B receives it, remaps it, and sends it out, Orch-A should correlate on it based on an element in a SOAPHeader.
To simulate the client environment, all the ports (except the first activating file receive) use \”direct binding\”.
Orch-B has the following line of code in a message assignment after a map in a construct block:
msgServiceAgentCallResponse(*) = msgServiceAgentCallRequestIn(*);That copies the SOAP Headers to the outgoing message, and I verified through tracing and HAT that the SOAP Headers are there and both the outgoing and incoming match the expected GUID using the BTSSubscriptionViewer.
So here’s the problem/question I have – if I don’t set any correlation in Orch-B, the messages don’t correlate. I have to use an \”Initalizing Correlation\” on the send shape of Orch-B to get it to work.
My thinking is that Orch-B should not require any knowledge of correlation, as it could theoretically be a web service, a Sharepoint file drop, or some human workflow.
Any ideas would be greatly appreciated.
Thanks,
Neal Walters
http://Biztalk-Training.comBelieve it or not, you have to catch a SOAPException.
Neal Walters
http://Biztalk-Training.comWe have a Biztalk Pipline project that references a C# project that has the following:
public class SoapHeaderAdder : Microsoft.BizTalk.Component.Interop.IComponent, IBaseComponent, IPersistPropertyBag, IComponentUIIf we want to change the C# code to promote a new field, do we have to recompile the Biztalk Pipeline project?
In other words, since the stages of the pipeline are still the same, does the pipeline have to be recompiled and redeployed, or can we just redeploy the C# code.
Thanks,
NealThe problem is the way you are passing parameters
If you cannot change the web service then you cannot use a transform to create the multipart requests for m1 and m2.
Instead you need to use a MessageAssignment shape
[code:1:61ff75d332]m1_request.s0 = \"string\";
m1_request.s1 = \"string\";
m1_request.d0 = System.DateTime.Now;
//same for m2_request
[/code:1:61ff75d332]
The reason for this is the message parts are simple types and do not generate an Xml schema, therefore you cannot use a map.Alternatively you can change the web service
[code:1:61ff75d332]class c0 {
public r0[] m0();
public bool m1(p1 parameter);
public r1[] m2(p2 parameter);
} [/code:1:61ff75d332]And add the following classes:
[code:1:61ff75d332]class p1 {string s0, string s1, DateTime d0;}
class p2 {string s0, string s1, DateTime d1, string[] arr;}
class r0 { public string s0, s1; }
class r1 { public string s; public double d; } [/code:1:61ff75d332]The request messages are now complex types and will generate an Xml schema and can be used in a map.
No, the client was going to try re-install, I’m leaving it in his hands.
Neal
Yup. Just to be clear, i was referring to the case where they didnt have an Initialize Correlation on any send/receive shapes and it still compiled. Mostlikely that correlationset was passed in as a paramter
Cheers
January 23, 2006 at 10:54 PM in reply to: Need help on How to Not assemble useless incoming data #12712As far as I am aware the Flat File disassembler cannot ignore records.
Your options would be to write your own disassembler or deal with the errant records using a mapJon Flanders has a tool to help here: http://www.masteringbiztalk.com/blogs/jon/CategoryView,category,BTSnapshot.aspx
Also, the BizTalk Development Tool on my site more light weight can save you some time as well: http://biztalkgurus.com/Tools/Development-Helper-Tool.html
Hi there.
You would pass Correlation Sets as parameters. When that happens, a correlation is initialized and you could just set your shapes to follow that correlation.
In order to do that, you go into Orchesration View and Right Click Parameters and Choose \”New Correlation Set Parameter\” and there you have it
Hope that helps
Ginothanks guys very useful posts
Also out there is the Deployment Framework that has been created by Scott Colestock. It can be found at his website [url]http://www.traceoufthought.net[/url] Lets you bounce everything from right in Visual Studio and you can also set up some pretty neat custom processing stuff as well.
I have not needed to use much correlation at past clients, but current cliient uses it a lot!
I see one case where they send out 5 messages in a loop, then wait for 5 responses. To get around the limitation of not beign able to initialize correlation in the loop, they have one send before the loop which initializes correlation, then a send in a loop that loops 4 times using \”following correlation\”.
There was one orch. that compiled that used \”following orchestration\” instead of \”initialziing\” and it compiled, but I’m guessing it would cause a run-time error.
Other than the loop, why would you not always want to use \”initializing correlation\”?
Neal Walters
http://Biztalk-Training.com – Video/Demo TrainingIs it me or is it a huge pain to re-deploy solutions.
here’s what i do:
– I un-enlist all orcherations in biztalk explorer (i check all the checkboxes when asked to terminate/stop ports and instances)
– i go into each orchesration and unbind the ports
– i delete the ports that are \”Specify Now\”
– undeploy assembly
– redeploy assembly
– bind ports that are \”Specify Later\”
– start orchestrations
– wait 30 seconds
– testI have a feeling there’s a nice script that could be written to automate that tideous process.
Any ideas?
Thanks
-
AuthorPosts