Example #1
0
 private static void PublishMessage(IModel model, DestinationMessageHeader destination, byte[] message)
 {
     model.BasicPublish(
         exchange: destination.Exchange,
         routingKey: destination.RoutingKey,
         body: message);
 }
Example #2
0
        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.");
        }
Example #3
0
        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);
            }
        }
Example #4
0
        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);
        }