コード例 #1
0
        // Determines if the message should be delivered to the queue.  If the exchange is marked
        // with a predicate attribute, the corresponding externally named script is executed to
        // determine if the message has passing criteria.  If no external script is specified,
        // the exchange's Satisfies method is called.
        private async Task <bool> SatisfiesExchangeCriteria(MessageExchangeDefinition exchangeDef, IMessage message)
        {
            ScriptPredicate predicate = exchangeDef.Exchange.Settings.Predicate;

            if (predicate != null)
            {
                return(await _scriptingSrv.SatisfiesPredicate(message, predicate));
            }

            return(exchangeDef.Exchange.Satisfies(message));
        }
コード例 #2
0
 private void LogPublishingExchangeMessage(IMessage message,
                                           MessageExchangeDefinition exchangeDef)
 {
     _logger.LogTraceDetails(RabbitMqLogEvents.MESSAGE_PUBLISHER, "Publishing to Exchange",
                             new
     {
         Message     = message,
         ContentType = message.GetContentType(),
         exchangeDef.Exchange.BrokerName,
         exchangeDef.Exchange.ExchangeName
     });
 }
コード例 #3
0
        private async Task PublishAsync(MessageExchangeDefinition exchangeDef, IMessage message)
        {
            if (!await SatisfiesExchangeCriteria(exchangeDef, message))
            {
                return;
            }

            IMessageExchange exchange = exchangeDef.Exchange;

            string[] orderedContentTypes =
            {
                message.GetContentType(),
                exchange.Settings.ContentType
            };

            byte[] messageBody = _serializationMgr.Serialize(message, orderedContentTypes);

            LogPublishingExchangeMessage(message, exchangeDef);

            using (var channel = _connMgr.CreateChannel(exchange.BrokerName))
            {
                exchangeDef.Exchange.Publish(channel, message, messageBody);
            }
        }