public static RabbitMqEndpoint NewOutboundPublisher(string name, string type, string routingKeyOrTopicName, PublisherParameters p = null, MessageParameters defaultMessageParameters = null, CancellationToken token = default(CancellationToken)) { var exchangeType = GetFullExchangeType(type); p ??= new PublisherParameters() { AcceptReplies = false, AutoDelete = true, Durable = false, EnableConfirmSelect = false, ReplyQueueTtl = 0, Ttl = 6000 }; defaultMessageParameters ??= new MessageParameters() { AutoAck = false, Durable = false, Mandatory = false, Persistent = false, Priority = 3, Resilient = false, TimeOut = 6000 }; var ret = new RabbitMqEndpoint { Channel = _RabbitOut.CreateModel(), EndpointType = EndpointTypeEnum.Publisher, ExchangeName = name, QueueName = DefineQueueName(name, exchangeType, "", false), RoutingKeyOrTopicName = routingKeyOrTopicName, ExchangeId = Guid.NewGuid(), LocalCancellationToken = _RabbitOutCts?.Token ?? token, ChannelParameters = p, ExchangeType = GetFullExchangeType(type), DefaultMessageParameters = defaultMessageParameters }; VerboseLoggingHandler.Log($"Building a {exchangeType} outbound publisher, name='{name}', routingKeyOrTopicName='{routingKeyOrTopicName}', durable='{p.Durable}', ttl='{p.Ttl}', autoDelete='{p.AutoDelete}', acceptReplies='{p.AcceptReplies}', confirmSelect='{p.EnableConfirmSelect}'"); ret.ConnectToExchange(); if (p.EnableConfirmSelect) { ret.Channel.ConfirmSelect(); } if (p.AcceptReplies) { VerboseLoggingHandler.Log($"Building a return consumer, ExchangeId='{ret.ExchangeId}', replyQueueTtl='{p.ReplyQueueTtl}'"); ret.DefineRpcConsumer(ret.ExchangeName, ret.ExchangeId, p.ReplyQueueTtl); } VerboseLoggingHandler.Log("Exchange ready"); return(ret); }
static async Task Main(string[] args) { var mp = new MessageParameters() { AutoAck = false, Durable = true, Mandatory = true, Persistent = true, Priority = 3, Resilient = true, TimeOut = 32000 }; var ep = new PublisherParameters() { AutoDelete = false, Durable = true, AcceptReplies = true, ReplyQueueTtl = 8000, Ttl = 8000, EnableConfirmSelect = true }; Console.Write("Enter server name to connect to: "); var broker = Console.ReadLine(); Console.Write("Login Name: "); var login = Console.ReadLine(); Console.Write("Password: "******"/", login, password, 0, "RabbitMqFacadeTest1", cts); var cp = new ConsumerParameters() { AutoAckMode = ConsumerParameters.AutoAckModeEnum.Manual, AutoDelete = false, Durable = true }; var consumer = RabbitMqEndpoint.NewInboundConsumer("test", "d", "d", cp); consumer.IncomingMessage += OnIncomingMessage; consumer.Listen(); var publisher = RabbitMqEndpoint.NewOutboundPublisher("test", "d", "d", ep, mp); var response = await publisher.SendRpcMessageAsync("My name is Bob"); if (response == null) { Console.WriteLine("No one there!"); } else { Console.WriteLine(RabbitMqEndpoint.ConvertMessageToString(response)); } response = await publisher.SendRpcMessageAsync("My name is Sue"); if (response == null) { Console.WriteLine("No one there!"); } else { Console.WriteLine(RabbitMqEndpoint.ConvertMessageToString(response)); } response = await publisher.SendRpcMessageAsync("Ribbit"); if (response == null) { Console.WriteLine("No one there!"); } else { Console.WriteLine(RabbitMqEndpoint.ConvertMessageToString(response)); } response = await publisher.SendRpcMessageAsync("My name is Rachel"); if (response == null) { Console.WriteLine("No one there!"); } else { Console.WriteLine(RabbitMqEndpoint.ConvertMessageToString(response)); } Console.ReadLine(); }