private static void PublishMessage(IModel model, DestinationMessageHeader destination, byte[] message) { model.BasicPublish( exchange: destination.Exchange, routingKey: destination.RoutingKey, body: message); }
private void SendMessageToRmq(DestinationMessageHeader destination, object body) { Logger.Info($"Publishing message to {destination.Exchange}->{destination.RoutingKey}, message: {body}."); Policy. Handle <AlreadyClosedException>(). Or <BrokerUnreachableException>(). WaitAndRetryForever(ProcessRmqPolicyRetry). Execute(() => CreateModelAndPublishMessage(destination, body)); Logger.Info("Message published."); }
private void CreateModelAndPublishMessage(DestinationMessageHeader destination, object body) { using (var model = _connection.CreateModel()) { DeclareExchange( model: model, exchange: destination.Exchange, type: destination.ExchangeType, durable: destination.Durable); var bodyBytes = GetBodyBytes(body); PublishMessage(model, destination, bodyBytes); } }
private Message CreateMessage(UnknownBotCommand command) { var nextCommand = new PrintMessageCommand( chatId: command.ChatId, text: $"Неизвестная команда {command.Command}."); var message = new Message(nextCommand); var destination = new DestinationMessageHeader( exchange: "pv.telegram.message", routingKey: "telegram", exchangeType: ExchangeType.Direct, durable: true); message.Headers.AddHeader(DestinationMessageHeader.HeaderKey, destination); return(message); }