[rabbitmq-discuss] Data is feteched from the queue in random order
Alexis Richardson
alexis at rabbitmq.com
Thu Apr 28 10:11:51 BST 2011
Kamal
Apologies for our slow response...
Why do you think data is dequeued out of order?
alexis
On Wed, Apr 20, 2011 at 10:25 AM, Kamal Nandan
<kamal.nandan at impetus.co.in> wrote:
> Hi,
>
>
>
> I am trying to dequeue data from the RabbitMQ. Why is it so that the data is
> not dequeued in the same order in which it was enqueued into the queue?
>
>
>
> I see that the data is dequeued in a random order. Is it an expected
> behavior?
>
>
>
> Following is the block of code that I am using to dequeue:
>
>
>
>
>
> public int init(String hostName, int port, String userName, String
> password, String queueName) throws OceRecoverableException
>
> {
>
> if(true == LOG.isDebugEnabled()) {
>
> LOG.debug("Executing RabbitMqConsumer::init");
>
> }
>
>
>
> try {
>
> super.initialize(hostName, port, userName, password,
> queueName);
>
> } catch (IOException ioe) {
>
> String message = "RabbitMQ consumer failed to create
> connection with the RabbitMQ server.";
>
> LOG.error( message + " [ERROR: " + ioe.getMessage() +
> "]");
>
> throw new OceRecoverableException(ioe);
>
> }
>
>
>
> this.queueingConsumer = new QueueingConsumer(this.channel);
> //channel is the member of parent class
>
>
>
> try {
>
> this.channel.basicConsume(queueName, false,
> this.queueingConsumer);
>
> } catch(IOException ioe) {
>
> String message = "RabbitMQ consumer failed to set the
> QueueingConsumer callback for consuming data.";
>
> LOG.error( message + " [ERROR: " + ioe.getMessage() +
> "]");
>
> throw new
> OceRecoverableException(ioe);
>
> }
>
>
>
> return 0;
>
> }
>
>
>
>
>
> public byte[] fetchMessage(int timeout) throws OceRecoverableException
>
> {
>
> LOG.debug("RabbitMqConsumer::fetchMessage");
>
>
>
> if(this.channel == null)
>
> {
>
> throw new OceRecoverableException("The channel is not
> initialized; Initilize the channel by calling init method");
>
> }
>
>
>
> QueueingConsumer.Delivery delivery;
>
>
>
> try {
>
> delivery = this.queueingConsumer.nextDelivery(timeout);
>
> } catch(Exception ex) {
>
> String message = "Error occurred while fetching data from
> the RabbitMQ server.";
>
> LOG.error( message + " [ERROR: " + ex.getMessage() + "]");
>
> throw new OceRecoverableException(ex);
>
> }
>
>
>
> if(delivery != null)
>
> {
>
> try {
>
>
> this.channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
>
> } catch (IOException ioe) {
>
> String message = "Error occurred while sending
> acknowledgement to the RabbitMQ server for the fetched message.";
>
> LOG.error( message + " [ERROR: " + ioe.getMessage()
> + "]");
>
> throw new OceRecoverableException(ioe);
>
> }
>
>
>
> byte[] body = delivery.getBody();
>
> return body;
>
> }
>
> else
>
> {
>
> return null;
>
> }
>
> }
>
>
>
> }
>
>
>
>
>
> It would be great, if someone could guide me regarding this? I want the
> data to be fetched in the order it was enqueued.
>
>
>
> Thanks & Regards,
>
> Kamal
>
> ________________________________
> Are you exploring a Big Data Strategy ? Listen to this recorded webinar on
> Planning your Hadoop/ NoSQL projects for 2011 at
> www.impetus.com/featured_webinar?eventid=37
>
> Follow us on www.twitter.com/impetuscalling or visit www.impetus.com to know
> more.
>
>
> NOTE: This message may contain information that is confidential,
> proprietary, privileged or otherwise protected by law. The message is
> intended solely for the named addressee. If received in error, please
> destroy and notify the sender. Any use of this email is prohibited when
> received in error. Impetus does not represent, warrant and/or guarantee,
> that the integrity of this communication has been maintained nor that the
> communication is free of errors, virus, interception or interference.
>
> _______________________________________________
> rabbitmq-discuss mailing list
> rabbitmq-discuss at lists.rabbitmq.com
> https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
>
>
More information about the rabbitmq-discuss
mailing list