...
Code Block | ||
---|---|---|
| ||
/* * Copyright (c) 2005-2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * WSO2 Inc. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except * in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ using System; using System.Collections.Generic; using System.Linq; using System.Text; using RabbitMQ.Client; namespace RabbitMQ { class QueuePublisher { static void Main(string[] args) { QueuePublisher publisher=new QueuePublisher(); publisher.PublishMessage("This is a Test " +i); Console.WriteLine("Sent Message "+i); Console.ReadLine(); } public void PublishMessage(string message) { //Setup the connection with the message broker ConnectionFactory factory = new ConnectionFactory(); IProtocol protocol = Protocols.AMQP_0_8_QPID; factory.VirtualHost = "/carbon"; factory.UserName = "admin"; factory.Password = "admin"; factory.HostName = "localhost"; factory.Port = 5672; factory.Protocol = protocol; using (IConnection conn = factory.CreateConnection()) { using (IModel ch = conn.CreateModel()) { //Declare the exchange for the publisher.Here the exchange type is direct. ch.ExchangeDeclare("amq.direct", "direct"); //Publish the message ch.BasicPublish("amq.direct", "test-queue", null, Encoding.UTF8.GetBytes(message)); } } } } |
Next, execute the following "QueueConsumer" .Net client, using which messages can be received from 'test-queue'.
Code Block | ||
---|---|---|
| ||
/* * Copyright (c) 2005-2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * WSO2 Inc. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except * in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ using System; using System.Collections.Generic; using System.Linq; using System.Text; using RabbitMQ.Client; namespace QueueConsumer { class QueueConsumer { static void Main(string[] args) { QueueConsumer qConsumer = new QueueConsumer(); qConsumer.getMessage(); } public void getMessage() { //Setup the connection with the message broker ConnectionFactory factory = new ConnectionFactory(); IProtocol protocol = Protocols.AMQP_0_8_QPID; factory.VirtualHost = "/carbon"; factory.UserName = "admin"; factory.Password = "admin"; factory.HostName = "localhost"; factory.Port = 5672; factory.Protocol = protocol; using (IConnection conn = factory.CreateConnection()) { using (IModel ch = conn.CreateModel()) { //Declare a queue to retrieve messages. ch.QueueDeclare("test-queue", true, false, false, null); //Create the binding between queue and the exchance ch.QueueBind("test-queue", "amq.direct", "test-queue"); QueueingBasicConsumer consumer = new QueueingBasicConsumer(ch); ch.BasicConsume("test-queue",false,consumer); while (true) { try { RabbitMQ.Client.Events.BasicDeliverEventArgs e = (RabbitMQ.Client.Events.BasicDeliverEventArgs)consumer.Queue.Dequeue(); byte[] body = e.Body; string message = Encoding.UTF8.GetString(body); Console.WriteLine(message); ch.BasicAck(e.DeliveryTag, false); } catch (OperationCanceledException e) { Console.WriteLine(e); break; } } } } } } } |
The received messages get printed on the console.