We often get people saying they are losing messages with using the MSMQ topic...
When we investigate, they aren't. But, some things are happening that can confuse.
The number one offender for message "loss" is using two instances of the same Party Id . This is easy to do with Adapters and Connectors and Queued Topics.
The net effect of that is the message will always be delivered to one Party..It's a non mulitcasting queue under there so that… Continue
Added by CM on March 26, 2010 at 6:17pm —
Many times load balancing can change what the optimal solution is for a given deployment.
Unless careful consideration is given to what is trying to be accomplished then some erroneous conclusions can be arrived at...
For example, people take it as gospel that netTcp binding is superior for performance... That might not be the case depending on how you're using it. Pooling and affinity are great...unless you want to scale in a round robin… Continue
Added by CM on March 17, 2010 at 4:55pm —
I thought I'd share a couple of tips
First Tip : REST drop off point
You can set up a Pipeline that allows the client to POST a message and get a 200 response very easily with Neuron.
1)Create a Pipeline and adding whatever logic you wish to process the POST. Many times this may simply be a Publish step.
2)Next add a Code step that sets context.Data to a new ESBMessage and then uses the FromString method with "" as an argument. You don't have to use… Continue
Added by CM on December 15, 2009 at 10:18am —
The component Neuron uses for it's Pipeline code step stores the fully qualified assembly name. This causes issues sometimes for people who have set up assembly versioning in their projects.
When we ask people why they are versioning an internal dll that they never intend to run side by side the most common answer we get is so they can be sure the right one is deployed to production.
So, how can you achieve a process where you provide yourselves this kind of information… Continue
Added by CM on December 15, 2009 at 8:57am —
Sometimes it's efficacious to attach a pipeline unconditionally to the Party's On Client Receive in a Service Connector that uses the SetProperty step to always set the Semantic to "Request" even if the Messaging Pattern in the connector is already set to Request-Reply.
Why would you do that? Well, if the message came from a Client Connector the Semantic is likely already set correctly so this doesn't really do anything.. But if the message came from an Adapter or Pipeline that has… Continue
Added by CM on November 25, 2009 at 3:27pm —
Semantic is one of the more estoric things in the Neuron world. If you never use the Test Client or the API you may not even know it exists...
Semantic has a couple of effects in Neuron. It controls message path and it influences blocking behavior of the Party Publishing. Most Neuron users are impacted by Semantic in the Service Endpoints.
When you use Request-Reply Messaging Pattern with a Client Connector what occurs under the covers is that the Neuron API publishes the… Continue
Added by CM on November 20, 2009 at 9:24am —
The mad scientist Jesse Ezell has baked a little goodie into 2.5 you may find useful but you won't find it in the UI...
What he's done is make it so you can change the URL of the target service in a Pipeline. This means you can not only easily create an On Ramp pattern in Neuron you can create an Off Ramp as well!
The actual code you use looks like this:
context.Data.SetProperty("Addressing","To",[Insert your service url here]);
Pretty simple… Continue
Added by CM on November 12, 2009 at 11:22am —
....Grrr..... I have been hearing this one since I did EJB and CORBA... and then BizTalk...and I still hear it with Neuron..
The fact is for whatever reason the notion of an intermediary raises some folks hackles....Usually it's ops folks but occasionally you get the point to point developer or super framework guy who only trusts their code..
I'm not sure why it's such a hard concept to accept an intermediary for some folks...Ask an ops guy if instead of using routers,… Continue
Added by CM on October 29, 2009 at 9:52am —
Sometimes when talking to people about Neuron for the first time or after their first few days using the product I'll get asked "Do you have logging?"...
Sheesh.. do we ever... First, there is the Trace Level setting you access in Neuron Explorer by using the Configure Server.. Set that to the level desired and restart the service. If you make it verbose you will get lots and lots of info including message bodies. This log level will create a new directory under logs each time the… Continue
Added by CM on October 19, 2009 at 8:00am —
I'm currently in the middle of something with insane deadlines, many vendors and constant changes to those vendors services. Yet, the Neudesic Services team I'm working with is keeping up with those changes as they come in even though they have to accomodate all of those changes as soon as they occur.
Why? because every change made is just naturally handled by Neuron's typeless endpoints, pub sub capabilities and a code step that alters the Topic based on SOAP Action.
Added by CM on October 7, 2009 at 5:50pm —
A lot of times I'll see this pattern in web services calls bool DoSomething(SomeObject foo). Usually, when I dig in there's not any actual code that returns false...If an exception is thrown then it never gets to "return true".
Other times they will switch the return value to void but still refuse to mark the contract as one way.
What's at the root of these behaviors? Distrust. Basically, there is a complete distrust of asynchorous operations and… Continue
Added by CM on October 1, 2009 at 9:58am —
One of the primary advantages of using an intermediary is defeating the n(n-1) integration problem.
Leveraging the intermediary involves one of three approaches.
The first way is classic SOA and involves a modeling stage before any development moves forward. In this approach architects model the canonical representation of entities that represent their business. So Customer, Sale etc. are created and the web services exposed are those entities. This is a great approach if… Continue
Added by CM on September 13, 2009 at 11:00am —
I get that question a lot...I think the reason I get that question so much is people are so used to using mid tier products a certain way...But before I get into that let's do the easy case. If you want to bootstrap API clients from a single ip and you want those API clients to be able pub sub reliably across multiple servers then farm.
But what about people that want to use Neuron as services intermediary only so that they don't take a depency on our DLL's? Now it gets more… Continue
Added by CM on September 5, 2009 at 6:43am —
Many times when I go into a new customer I am going into a place that has attempted to build their own ESB or their own SOA infrastructure. So why are we being brought in? It’s simple. They’ve failed. What’s not so simple are the reasons they have failed.
To begin to understand the problem you first have to understand the people that are usually tasked with building such systems. They are usually very smart and are often very accomplished programmers. Many times they have extremely… Continue
Added by CM on August 25, 2009 at 4:19pm —
Neuron uses the presense of a nodeset in things like the Message Pattern as the predicate
This means something like this will evaluate to true
//*[local-name()='Foo' and namespace-uri()='http://Baz' and text()='Finorkle'] and will work..
but something like this won't
//*[local-name()='Foo' and namespace-uri()='http://Baz']/text()='Finorkle'
in theory we could either swtich to Evaluate or offer it as an option ...…
Added by CM on April 9, 2009 at 1:34pm —
Many users are familiar with utilizing Neuron for Location Transparency and Services Mediation as well as standard EAI. And, a fair number of users are familiar with using Neuron's pipeline features such as WF or Notifications or Transformation.
Very few users however are aware that you can achieve patterns with Neuron that seem to require a classic orchestration engine. I was asked recently about one of those patterns Scatter-Gather and provided a solution that was targeted to that… Continue
Added by CM on February 26, 2009 at 2:27pm —
Sometimes it's desirable to utilize Neuron as an onramp for services that don't actually exist....What do I mean by that?
Well imagine you had a set of stored procedures that had served a traditional client server or pure server side architecture well and you wanted to expose them to new WCF clients. One option would be to create a WCF service that exposes the operations and have all the goodness of contracts and another platform and application to manage.
Another option… Continue
Added by CM on February 12, 2009 at 11:02am —
Many times when on site I'm asked how do we achieve "guaranteed delivery" or "zero message loss"? with Neuron. The answer is somewhat involved but hopefully after reading this blog you'll understand the pieces that need to be in place.
First, is the environment 2003/XP? If it is, then the story is that if all messaging i.e. parties will run on the server then you run one Neuron server and use the MSMQ channel. Cluster the Neuron box for HA.
The only scaling that is… Continue
Added by CM on February 6, 2009 at 3:23pm —