[zeromq-dev] Question about the PUBSUB design pattern when server restarts.
Janak Raja
janak_raja at yahoo.com
Thu Nov 11 23:11:18 CET 2010
Hello Joshua,
Thanks for your response. I donot care when subscriber gets the data as
sequence for my publisher is infinite. Meaning no Start / no End.
How do I close this previous queue ?
Even though I stop/start publisher, does it still maintain a state of the
previously connected subscriber and their queue ?
Any suggestion on how to solve this would be very helpful ?
Thanks,
Janak
________________________________
From: Joshua Foster <jhawk28 at gmail.com>
To: ZeroMQ development list <zeromq-dev at lists.zeromq.org>
Sent: Thu, November 11, 2010 1:19:27 PM
Subject: Re: [zeromq-dev] Question about the PUBSUB design pattern when server
restarts.
If you want the subscriber to pick up where it last left off, be sure to set
the identity. The publisher is probably creating a new queue with the
"second" subscriber, but leaving the previous queue open. The previous queue
is the one that continues to grow (causing memory to increase).
Joshua
On 11/11/2010 1:53 PM, Janak Raja wrote:
Hello,
>
>
> I recently came across zeroMQ and wanted to understand on what will
>be the behavior for PUBSUB design pattern when PUB goes down for more
>than 2 minutes.
>
>
> I tried wu example with a little modification to send packets
>continuously. Please let me know what I am doing wrong in this.
>
>
> Do I have to call connect from client side after every s_recv call
>?
> Currently, I see that if I dont call connect on SUB and PUB stops
>and 2 minutes later starts again, memory usage on pub keeps on
>increasing ? May be, its because it might be keeping it in queue for
>the sub to get the data.
>
>
> Please advice,
>
>
> Here is the Publisher code:
> //
>// Weather update server
>// Binds PUB socket to tcp://*:5556
>// Publishes random weather updates
>//
>#include "zhelpers.h"
>
>
>int main () {
> // Prepare our context and publisher
> void *context = zmq_init (1);
> void *publisher = zmq_socket (context, ZMQ_PUB);
> zmq_bind (publisher, "tcp://*:5556");
> zmq_bind (publisher, "ipc://weather.ipc");
>
>
> // Initialize random number generator
> srandom ((unsigned) time (NULL));
> while (1) {
> // Get values that will fool the boss
> int zipcode, temperature, relhumidity;
> zipcode = within (100000);
> temperature = within (215) - 80;
> relhumidity = within (50) + 10;
>
>
> // Send message to all subscribers
> char update [20];
> sprintf (update, "%05d %d %d", zipcode, temperature,
>relhumidity);
> s_send (publisher, update);
> }
> zmq_close (publisher);
> zmq_term (context);
> return 0;
>}
>
>
>
>
>
>
>
>
>Subscriber code:
> //
>// Weather update client
>// Connects SUB socket to tcp://localhost:5556
>// Collects weather updates and finds avg temp in zipcode
>//
>#include "zhelpers.h"
>
>
>int main (int argc, char *argv[])
>{
> void *context = zmq_init (1);
>
>
> // Socket to talk to server
> printf ("Collecting updates from weather server...\n");
> void *subscriber = zmq_socket (context, ZMQ_SUB);
> zmq_connect (subscriber, "tcp://localhost:5556");
>
>
> // Subscribe to zipcode, default is NYC, 10001
> char *filter = (argc > 1)? argv [1]: "10001 ";
> zmq_setsockopt (subscriber, ZMQ_SUBSCRIBE, filter, strlen
>(filter));
> while(1)
> {
> // Process 100 updates
> int update_nbr;
> long total_temp = 0;
> for (update_nbr = 0; update_nbr < 100; update_nbr++) {
> char *string = s_recv (subscriber);
> int zipcode, temperature, relhumidity;
> sscanf (string, "%d %d %d",
> &zipcode, &temperature, &relhumidity);
> total_temp += temperature;
> free (string);
> }
> printf ("Average temperature for zipcode '%s' was %dF\n",
> filter, (int) (total_temp / update_nbr));
> }
> zmq_close (subscriber);
> zmq_term (context);
> return 0;
>}
>
>
>
>
>Thanks,
>Janak
>
> _______________________________________________ zeromq-dev mailing list
>zeromq-dev at lists.zeromq.org http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20101111/8a264e1b/attachment.htm>
More information about the zeromq-dev
mailing list