blob: 120ec49cbe13054a5b1e224d9fb685f7eb7fe92d [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF 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 Apache.NMS;
using Apache.NMS.Util;
using Apache.NMS.Amqp;
namespace Apache.NMS.Amqp.Test
{
public class TestMain
{
/// <summary>
/// AMQP Hello World
/// Using the AMQP protocol, send a message to a topic and retrieve that message again.
/// </summary>
/// <param name="uri">AMQP peer network address string. This string selects
/// the Apache.NMS.AMQP provider and further specifies the TCP address and port of the
/// peer AMQP entity.</param>
/// <param name="protocolVersion">Selects AMQP protocol version. Use 'amqp0-10' or 'amqp1.0'.
/// amqp1.0 is the default version if none is specified.</param>
/// <param name="topicAddress">The name of the topic through which the message is passed
/// in the AMQP peer.</param>
public static void AMQP_HelloWorld(string uri, string protocolVersion, string topicAddress)
{
// AMQP Hello World
//
// Notes:
// * Run qpidd broker, activemq broker, or dispatch router on given uri.
// * Ensure the nmsprovider-amqp.config file exists
// in the executable folder (build\net4-0\debug).
// * Ensure the unmanaged qpid*.dll and boost*.dll files from
// .nant\library\local\org.apache.qpid\Apache.Qpid\<version>\net-4.0\debug
// are in project's Output Path (build\net-4.0\debug) so that they may be
// loaded by org.apache.qpid.messaging.dll.
try
{
Uri connecturi = new Uri(uri);
Console.WriteLine("About to connect to " + connecturi);
IConnectionFactory factory =
new NMSConnectionFactory(connecturi, "Bob", "protocol:" + protocolVersion);
using (IConnection connection = factory.CreateConnection())
using (ISession session = connection.CreateSession())
{
IDestination destination = SessionUtil.GetDestination(session, topicAddress);
// Create a consumer and producer
using (IMessageConsumer consumer = session.CreateConsumer(destination))
using (IMessageProducer producer = session.CreateProducer(destination))
{
// Start the connection so that messages will be processed.
connection.Start();
// Create a text message
ITextMessage request = session.CreateTextMessage("Hello World! " + DateTime.Now.ToString("HH:mm:ss tt"));
request.Properties["NMSXGroupID"] = "cheese";
request.Properties["myHeader"] = "Cheddar";
// For dispatch router 0.1 messages require a routing property
request.Properties["x-amqp-to"] = topicAddress;
// Send the message
producer.Send(request);
// Consume a message
ITextMessage message = consumer.Receive() as ITextMessage;
if (message == null)
{
Console.WriteLine("No message received!");
}
else
{
Console.WriteLine("Received message text: " + message.Text);
Console.WriteLine("Received message properties: " + message.Properties.ToString());
}
producer.Close();
consumer.Close();
session.Close();
connection.Stop();
}
}
} catch (Exception e) {
Console.WriteLine("Exception {0}.", e);
}
}
public static void Main(string[] args)
{
string uriQpidd = "amqp:localhost:5672";
string uriActivemq = "amqp:localhost:5672";
string uriDispatch = "amqp:localhost:5672";
//AMQP_HelloWorld(uriQpidd, "amqp0-10", "amq.topic");
//AMQP_HelloWorld(uriQpidd, "amqp1.0", "amq.topic");
AMQP_HelloWorld(uriActivemq, "amqp1.0", "amq.topic");
//AMQP_HelloWorld(uriDispatch, "amqp1.0", "amq.topic");
}
}
}