Neuron ESB User Network

The Service Bus for the Connected Business

The event handler attached to Subscriber.OnReceive() event never fires in WIN FORM application, but works fine in console appliation

Hi,

 

I writing windows form application using Neuron API. I have already setup Topic, Publisher and Subscriber correctly in the "Neuron Esb Explorer" and tested it through test client and it works.
 
On the form's button click event i am connecting to Publisher, Subscriber and sending xml message (<message>Hello world</message>) through publisher to subcriber, I have already wired up an event handler "MyOnReceive" to subscriber.OnReceive event.

 

So following is the code i have done, here the button1_Click() works fine, but the MyOnReceive() event handler never triggers.


        private void button1_Click(object sender, EventArgs e)
        {
            using (Publisher publisher = new Publisher("PublishParam"))
            {
                publisher.Connect();

                // Create an instance of a subscriber.
                using (Subscriber subscriber = new Subscriber("PublishParam"))
                {
                    subscriber.OnReceive += MyOnReceive;
                    subscriber.Connect();

                    // Send an object.
                    publisher.SendXml("PublishParamTopic", "<message>Hello world</message>");

                }
            }
        }

        private/public void MyOnReceive(object sender, MessageEventArgs e)
        {
            ESBMessage message = e.Message;

            string objString = message.GetBody<string>();
            Console.WriteLine(objString.ToString());
        }
       
The strange thing is when i move the above piece of code to console appliation () it works. see the follwoing example. Any idea whats going wrong here?

    public class Program
    {
        static void Main(string[] args)
        {
            using (Publisher publisher = new Publisher("PublishParam"))
            {
                publisher.Connect();

                // Create an instance of a subscriber.
                using (Subscriber subscriber = new Subscriber("PublishParam"))
                {
                    subscriber.OnReceive += MyOnReceive;
                    subscriber.Connect();

                    // Send an object.
                    publisher.SendXml("PublishParamTopic", "<message>Hello world</message>");

                    Console.ReadLine();
                }
            }
        }

        private static void MyOnReceive(object sender, MessageEventArgs e)
        {
            ESBMessage message = e.Message;

            string objString = message.GetBody<string>();
            Console.WriteLine(objString.ToString());
        }
    }

 

Any idea whats going wrong here, I would really appriciate if some one can advise me

 

Views: 65

Reply to This

Replies to This Discussion

notice what you are doing though....for the console app, you have a console.readline() which basically prevents the Subscriber object from going out of scope...hence the event fires.   For the windows app though...you have no stop point...and hence the subscriber goes out of scope and is disposed....hence the event never fires.

What you should do is just create the subscriber as a module level variable so it never goes out of scope.

Kind regards,

Marty Wasznicky
General Manager, Product Field Operations

Neuron ESB

Neudesic, L.L.C.

 

Brilliant! it works! thanks :)

RSS

Neuron ESB Product Support Forums and Communities

Latest Activity

Nick Novotny posted a discussion

Script to stop/restart service connectors

Is there a way to turn on and off service connectors through the neuron api?  Right now I need to go to Endpoint Health in Activity, and right click to stop and restart service connectors, I would like to have a script to do this.  Is this possible? Thanks,-Nick NSee More
May 11
Profile Iconsuresh datla and Mahboob joined Neuron ESB User Network
Apr 24
Nick Novotny posted a discussion

Msmq network transport error logging

We have multi-casting one way messaging through a remote msmq server using wcf services for our system. One day one of our many environments got a message to multicast…and didn’t send anything out.  We have a pipeline step to audit the incoming message, topic properties to move msmq messages to a dead letter queue after a specific amount of time, and a service policy to move messages to the failed neuron db table after a specific amount of time/retries (matching the msmq network properties to…See More
Apr 13
Stas Makutin posted a discussion

Load-balancing using Neuron

I want to implement following scenario using Neuron ESB:- get big list of working items from somewhere (let's say some database)- split this list to small "batches" of working items- send these batches each to particular instance of specific subscriber (Worker), so each that instance will process assigned batch in parallel with other instances- collect feedback (is processing complete/failed) + implement some fail-over mechanism (resend failed batches, monitor if batches weren't processed…See More
Apr 11
Profile IconStas Makutin, Bjorn Thomsen and Steve Harclerode joined Neuron ESB User Network
Apr 11
MH is now a member of Neuron ESB User Network
Mar 29
Profile IconCraig Muir and mehnaz joined Neuron ESB User Network
Mar 12
John Ryan posted a discussion

Trouble creating a net.msmq Client Connector

Has anyone successfully created a Client Connector using Net.msmq?I'm trying as many different configurations as i can to post a message to a Client Connector but i get the following error on my client app:"The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it is in the Faulted state."It looks as though my client connector endpoint is not binding to the WAS correctly.If anyone has any ideas, i'd love to hear them.Here are my Client…See More
Mar 6

Badge

Loading…

© 2012   Created by Neuron Admin.   Powered by

Badges  |  Report an Issue  |  Terms of Service