Esempio n. 1
0
 public void Publish(object message, MessageProperties messageProperties)
 {
     try
     {
         if (_connection != null && _connection.IsOpen)
         {
             Flush();
             PublishMessage(message, messageProperties, null);
         }
         else
         {
             lock (_queueLock)
                 _queueStrategy.Enqueue(new MessageInfo {
                     Message = message, MessageProperties = messageProperties
                 });
         }
     }
     catch (Exception e)
     {
         Logger.Current.Write("An exception occurred while publishing: " + e.Message, TraceEventType.Error);
         throw;
     }
 }
Esempio n. 2
0
 public static void Publish <TRequestMessage, TReplyMessage>(this IBus bus, TRequestMessage requestMessage, MessageProperties messageProperties, Action <IMessageContext <TReplyMessage> > action)
 {
     bus.Publish(requestMessage, messageProperties, action, TimeSpan.MinValue);
 }
Esempio n. 3
0
 public void Publish <TRequestMessage, TReplyMessage>(TRequestMessage message, MessageProperties messageProperties,
                                                      Action <IMessageContext <TReplyMessage> > replyAction,
                                                      TimeSpan timeout)
 {
     try
     {
         PublishMessage(message, messageProperties, replyAction, timeout);
     }
     catch (Exception e)
     {
         Logger.Current.Write("An exception occurred while publishing: " + e.Message, TraceEventType.Error);
     }
 }
Esempio n. 4
0
        void PublishMessage <TRequestMessage, TReplyMessage>(TRequestMessage message, MessageProperties messageProperties,
                                                             Action <IMessageContext <TReplyMessage> > replyAction,
                                                             TimeSpan timeout)
        {
            PublishMessage(message, messageProperties, (p, pi) =>
            {
                IConsumeInfo replyInfo = pi.ReplyInfo;
                string queueName       = Guid.NewGuid().ToString();
                p.ReplyTo       = new PublicationAddress(replyInfo.ExchangeType, "", queueName).ToString();
                p.CorrelationId = Guid.NewGuid().ToString();
                ISerializationStrategy serializationStrategy = pi.SerializationStrategy ?? _defaultSerializationStrategy;

                IConsumeInfo consumeInfo     = CloneConsumeInfo(replyInfo);
                consumeInfo.ExchangeName     = "";
                consumeInfo.QueueName        = queueName;
                consumeInfo.IsQueueExclusive = true;

                new Subscription <TReplyMessage>(_connection,
                                                 _defaultDeadLetterConfiguration,
                                                 serializationStrategy,
                                                 consumeInfo,
                                                 queueName /* routing key */,
                                                 replyAction,
                                                 null,
                                                 x => { },
                                                 this,
                                                 SubscriptionType.RemoteProcedure,
                                                 timeout).Start();
            });
        }
Esempio n. 5
0
 public void Subscribe <TMessage>(Action <IMessageContext <TMessage> > action, MessageProperties messageProperties)
 {
     SubscribeMessage(action, messageProperties);
 }
Esempio n. 6
0
 protected bool Equals(MessageProperties other)
 {
     return(Expiration.Equals(other.Expiration) && string.Equals(RoutingKey, other.RoutingKey) && Equals(Headers, other.Headers));
 }
Esempio n. 7
0
 public void Publish <TMessage>(TMessage message, MessageProperties messageProperties)
 {
     _messagePublisher.Publish(message, messageProperties);
 }
Esempio n. 8
0
 public void Unsubscribe <TMessage>(MessageProperties messageProperties)
 {
     UnsubscribeMessage <TMessage>(messageProperties);
 }
Esempio n. 9
0
        void SubscribeMessage <TMessage>(Action <IMessageContext <TMessage> > action, MessageProperties messageProperties)
        {
            IConsumeInfo routeInfo    = _configurationModel.ConsumeRouteConfiguration.GetRouteInfo(typeof(TMessage));
            var          subscription = new Subscription <TMessage>(_connection, _configurationModel.DefaultDeadLetterConfiguration,
                                                                    _configurationModel.DefaultSerializationStrategy,
                                                                    routeInfo, messageProperties.RoutingKey, action, messageProperties.Headers, _defaultErrorCallback,
                                                                    _messagePublisher, SubscriptionType.Subscription, TimeSpan.MinValue);

            _subscriptions.Add(new SubscriptionKey(typeof(TMessage), messageProperties), subscription);
            subscription.Start();
        }
Esempio n. 10
0
 void PublishMessage <TRequestMessage, TReplyMessage>(TRequestMessage message, MessageProperties messageProperties,
                                                      Action <IMessageContext <TReplyMessage> > replyAction,
                                                      TimeSpan timeout)
 {
     _messagePublisher.Publish(message, messageProperties, replyAction, timeout);
 }
Esempio n. 11
0
		public SubscriptionKey(Type messageType, MessageProperties messageProperties)
		{
			_messageType = messageType;
			_messageProperties = messageProperties;
		}
Esempio n. 12
0
 public SubscriptionKey(Type messageType, MessageProperties messageProperties)
 {
     _messageType       = messageType;
     _messageProperties = messageProperties;
 }
Esempio n. 13
0
		protected bool Equals(MessageProperties other)
		{
			return Expiration.Equals(other.Expiration) && string.Equals(RoutingKey, other.RoutingKey) && Equals(Headers, other.Headers);
		}