in dotnet-client/Program.cs [55:152]
public static int Main(string[] args)
{
var app = new CommandLineApplication();
MessageCounter counter = new MessageCounter();
var optionURL = app.Option("--url <BROKER_URL>", "Broker URL", CommandOptionType.SingleValue).IsRequired();
var optionUser = app.Option("--user <BROKER_USER>", "Broker user-id", CommandOptionType.SingleValue);
var optionPassword = app.Option("--password <BROKER_PASSWORD>", "Broker password", CommandOptionType.SingleValue);
var optionMode = app.Option("--mode <sender_or_receiver>", "App mode", CommandOptionType.SingleValue).IsRequired();
var optionType = app.Option("--type <queue_or_topic>", "Destination Type", CommandOptionType.SingleValue).IsRequired();
var optionDest = app.Option("--destination <DEST_NAME>", "Destination name", CommandOptionType.SingleValue).IsRequired();
var optionCliName = app.Option("--name <CLIENT_NAME>", "Client name", CommandOptionType.SingleValue).IsRequired();
var optionInterval = app.Option<int>("--interval <milliseconds>", "Time delay between messages", CommandOptionType.SingleValue);
var optionNotPersistent = app.Option<bool>("--notPersistent <true_or_false>", "Persistent or Non Persistent messages", CommandOptionType.SingleValue);
var optionTTL = app.Option<int>("--ttl <milliseconds>", "Message expiry time", CommandOptionType.SingleValue);
app.OnExecute(() =>
{
string temp = GetUserPassword().Result;
string[] userPassword = temp.Split(',');
string user = userPassword[0];
string password = userPassword[1];
Uri connecturi = new Uri(optionURL.Value());
IConnectionFactory factory = new NMSConnectionFactory(connecturi);
if (optionUser.HasValue())
{
user = optionUser.Value();
}
if (optionPassword.HasValue())
{
password = optionPassword.Value();
}
using (IConnection connection = factory.CreateConnection(user, password))
{
connection.ClientId = "AmazonMQWorkshop - " + DateTimeOffset.Now.ToUnixTimeMilliseconds();
connection.Start();
IDestination destination;
using (ISession session = connection.CreateSession())
{
if (optionType.Value().Equals("queue"))
{
destination = session.GetQueue(optionDest.Value());
}
else
{
destination = session.GetTopic(optionDest.Value());
}
if (optionMode.Value().Equals("sender"))
{
using (IMessageProducer producer = session.CreateProducer(destination))
{
if (optionNotPersistent.HasValue())
{
producer.DeliveryMode = MsgDeliveryMode.NonPersistent;
}
else
{
producer.DeliveryMode = MsgDeliveryMode.Persistent;
}
while(true)
{
string msgId = Guid.NewGuid().ToString();
string message = string.Format("Mesage number {0}", counter.count++);
ITextMessage request = session.CreateTextMessage(message);
request.NMSMessageId = msgId;
request.NMSCorrelationID = msgId;
producer.Send(request);
Console.WriteLine(string.Format("{0} Sent {1}", optionCliName.Value(), message));
Thread.Sleep(1000);
}
}
} else
{
using (IMessageConsumer consumer = session.CreateConsumer(destination))
{
consumer.Listener += new MessageListener(OnMessage);
semaphore.WaitOne((int)receiveTimeout.TotalMilliseconds, true);
}
}
}
}
});
return app.Execute(args);
}