/// <summary>
 /// Initializes a new instance of the <see cref="CachedMessageProducer"/> class.
 /// </summary>
 /// <param name="target">The target.</param>
 public CachedMessageProducer(IMessageProducer target)
 {
     this.target = target;
     deliveryMode = target.MsgDeliveryMode;
     priority = target.Priority;
     timeToLive = target.TimeToLive;
 }
 public DeliveryProperties SetDeliveryMode(MessageDeliveryMode value)
 {
     _DeliveryMode  = value;
     packing_flags |= 4096;
     Dirty          = true;
     return(this);
 }
Beispiel #3
0
        private static IMessage DoMapMessage(
            IMessage message,
            IMessageConverter converter,
            IRabbitHeaderMapper headerMapper,
            MessageDeliveryMode defaultDeliveryMode,
            bool headersMappedLast,
            bool reply)
        {
            var      targetHeaders = new MessageHeaders();
            IMessage amqpMessage;

            if (!headersMappedLast)
            {
                MapHeaders(message.Headers, targetHeaders, headerMapper, reply);
            }

            // if (converter is ContentTypeDe && headersMappedLast) {
            //    String contentType = contentTypeAsString(message.getHeaders());
            //    if (contentType != null)
            //    {
            //        amqpMessageProperties.setContentType(contentType);
            //    }
            // }
            amqpMessage = converter.ToMessage(message.Payload, targetHeaders);
            if (headersMappedLast)
            {
                MapHeaders(message.Headers, targetHeaders, headerMapper, reply);
            }

            // checkDeliveryMode(message, amqpMessageProperties, defaultDeliveryMode);
            return(amqpMessage);
        }
        public DeliveryProperties(MessageDeliveryPriority Priority, MessageDeliveryMode DeliveryMode, long Ttl, long Timestamp, long Expiration, String Exchange, String RoutingKey, String ResumeId, long ResumeTtl, params Option[] options)
        {
            SetPriority(Priority);
            SetDeliveryMode(DeliveryMode);
            SetTtl(Ttl);
            SetTimestamp(Timestamp);
            SetExpiration(Expiration);
            SetExchange(Exchange);
            SetRoutingKey(RoutingKey);
            SetResumeId(ResumeId);
            SetResumeTtl(ResumeTtl);

            for (int i = 0; i < options.Length; i++)
            {
                switch (options[i])
                {
                case Option.DISCARD_UNROUTABLE: packing_flags |= 256; break;

                case Option.IMMEDIATE: packing_flags |= 512; break;

                case Option.REDELIVERED: packing_flags |= 1024; break;

                case Option.NONE: break;

                default: throw new Exception("invalid option: " + options[i]);
                }
            }
        }
Beispiel #5
0
        public BusConfigurationBuilder RegisterPublication <TMessage>(
            string exchangeName,
            string typeHeader,
            MessageDeliveryMode deliveryMode,
            Func <Message, string> routingKeyFunc)
            where TMessage : Message
        {
            var _messageType = typeof(TMessage);

            if (!this.MessagePublications.ContainsKey(_messageType))
            {
                this.MessagePublications.Add(_messageType, new List <MessageDelivery>());
            }

            var _isCommandAndCommandEntryAlreadyExists = (typeof(Command).IsAssignableFrom(_messageType) && this.MessagePublications[_messageType].Count > 0);

            Check.Ensure(!_isCommandAndCommandEntryAlreadyExists, "Commands can only have one publication entry");

            this.MessagePublications[_messageType].Add(
                new MessageDelivery(
                    exchangeName,
                    typeHeader,
                    deliveryMode,
                    routingKeyFunc));

            return(this);
        }
Beispiel #6
0
    public void Send(IDestination destination, IBytesMessage message, MessageDeliveryMode deliveryMode, MessagePriority priority, TimeSpan timeToLive)
    {
        if (null == destination)
        {
            // See if this producer was created without a destination.
            if (null == _info.Destination)
            {
                throw new NotSupportedException();
            }

            throw new InvalidDestinationException(
                      $"The producer was created with a destination, but an invalid destination was specified. => Destination: '{_info.Destination}'");
        }

        Destination dest;

        if (Equals(destination, _info.Destination))
        {
            dest = destination as Destination;
        }
        else if (_info.Destination == null)
        {
            dest = Destination.Transform(destination);
        }
        else
        {
            throw new NotSupportedException("This producer can only send messages to: " + _info.Destination.PhysicalName);
        }

        var stompMessage = _messageTransformation.TransformMessage <BytesMessage>(message);

        stompMessage.ProducerId        = _info.ProducerId;
        stompMessage.FromDestination   = dest;
        stompMessage.StompDeliveryMode = deliveryMode;
        stompMessage.StompPriority     = priority;

        // Always set the message Id regardless of the disable flag.
        var id = new MessageId(_info.ProducerId, Interlocked.Increment(ref _producerSequenceId));

        stompMessage.MessageId = id;

        if (!DisableMessageTimestamp)
        {
            stompMessage.StompTimestamp = DateTime.UtcNow;
        }

        if (timeToLive != TimeSpan.Zero)
        {
            stompMessage.StompTimeToLive = timeToLive;
        }

        lock ( _closedLock )
        {
            if (_closed)
            {
                throw new ConnectionClosedException();
            }
            _session.DoSend(stompMessage, RequestTimeout);
        }
    }
 /// <summary>
 /// Initializes a new instance of the <see cref="CachedMessageProducer"/> class.
 /// </summary>
 /// <param name="target">The target.</param>
 public CachedMessageProducer(IMessageProducer target)
 {
     this.target  = target;
     deliveryMode = target.MsgDeliveryMode;
     priority     = target.Priority;
     timeToLive   = target.TimeToLive;
 }
Beispiel #8
0
 /**
  * Map an o.s.m.Message to an o.s.a.core.Message. When using a
  * {@link ContentTypeDelegatingMessageConverter}, {@link AmqpHeaders#CONTENT_TYPE} and
  * {@link MessageHeaders#CONTENT_TYPE} will be used for the selection, with the AMQP
  * header taking precedence.
  * @param requestMessage the request message.
  * @param converter the message converter to use.
  * @param headerMapper the header mapper to use.
  * @param defaultDeliveryMode the default delivery mode.
  * @param headersMappedLast true if headers are mapped after conversion.
  * @return the mapped Message.
  */
 public static IMessage MapMessage(
     IMessage requestMessage,
     IMessageConverter converter,
     IRabbitHeaderMapper headerMapper,
     MessageDeliveryMode defaultDeliveryMode,
     bool headersMappedLast)
 {
     return(DoMapMessage(requestMessage, converter, headerMapper, defaultDeliveryMode, headersMappedLast, false));
 }
Beispiel #9
0
        public virtual AbstractMessageBuilder <T> SetDeliveryModeIfAbsentOrDefault(MessageDeliveryMode deliveryMode)
        {
            if (Properties.DeliveryMode == null ||
                Properties.DeliveryMode.Equals(MessageProperties.DEFAULT_DELIVERY_MODE))
            {
                Properties.DeliveryMode = deliveryMode;
            }

            return(this);
        }
Beispiel #10
0
 public BusConfigurationBuilder RegisterPublication <TMessage>(
     string exchangeName,
     string typeHeader,
     MessageDeliveryMode deliveryMode)
     where TMessage : Message
 {
     return(this.RegisterPublication <TMessage>(
                exchangeName,
                typeHeader,
                deliveryMode,
                message => string.Empty));
 }
        public MessageDelivery(
            string exchangeName,                                                        // Can be empty where publishing via direct exchange,
            string typeHeader,
            MessageDeliveryMode deliveryMode,
            Func <Message, string> routingKeyFunc)
        {
            Check.RequireArgument("exchangeName", exchangeName, (exchangeName == string.Empty || exchangeName.Trim() != string.Empty));
            Check.RequireArgumentNotEmpty("typeHeader", typeHeader);
            Check.RequireArgument("deliveryMode", deliveryMode, Enum.IsDefined(typeof(MessageDeliveryMode), deliveryMode));
            Check.RequireArgumentNotNull("routingKeyFunc", routingKeyFunc);

            this.ExchangeName   = exchangeName;
            this.TypeHeader     = typeHeader;
            this.DeliveryMode   = deliveryMode;
            this.RoutingKeyFunc = routingKeyFunc;
        }
		public MessageDelivery(
			string exchangeName,						// Can be empty where publishing via direct exchange,
			string typeHeader,
			MessageDeliveryMode deliveryMode,
			Func<Message, string> routingKeyFunc)
		{
			Check.RequireArgument("exchangeName", exchangeName, (exchangeName == string.Empty || exchangeName.Trim() != string.Empty));
			Check.RequireArgumentNotEmpty("typeHeader", typeHeader);
			Check.RequireArgument("deliveryMode", deliveryMode, Enum.IsDefined(typeof(MessageDeliveryMode), deliveryMode));
			Check.RequireArgumentNotNull("routingKeyFunc", routingKeyFunc);
			
			this.ExchangeName = exchangeName;
			this.TypeHeader = typeHeader;
			this.DeliveryMode = deliveryMode;
			this.RoutingKeyFunc = routingKeyFunc;
		}
 public override void Read(IDecoder dec)
 {
     packing_flags = (int)dec.ReadUint16();
     if ((packing_flags & 2048) != 0)
     {
         _Priority = MessageDeliveryPriorityGetter.Get(dec.ReadUint8());
     }
     if ((packing_flags & 4096) != 0)
     {
         _DeliveryMode = MessageDeliveryModeGetter.Get(dec.ReadUint8());
     }
     if ((packing_flags & 8192) != 0)
     {
         _Ttl = dec.ReadUint64();
     }
     if ((packing_flags & 16384) != 0)
     {
         _Timestamp = dec.ReadDatetime();
     }
     if ((packing_flags & 32768) != 0)
     {
         _Expiration = dec.ReadDatetime();
     }
     if ((packing_flags & 1) != 0)
     {
         _Exchange = dec.ReadStr8();
     }
     if ((packing_flags & 2) != 0)
     {
         _RoutingKey = dec.ReadStr8();
     }
     if ((packing_flags & 4) != 0)
     {
         _ResumeId = dec.ReadStr16();
     }
     if ((packing_flags & 8) != 0)
     {
         _ResumeTtl = dec.ReadUint64();
     }
 }
 public void Send(Message message, MessageDeliveryMode deliveryMode, int priority, long timeToLive)
 {
     target.Send(message, deliveryMode, priority, timeToLive);
 }
 public void Send(Destination dest, Message message, MessageDeliveryMode deliveryMode, int priority, long timeToLive)
 {
     nativeMessageProducer.Send(dest, message, deliveryMode, priority, timeToLive);
 }
 public void Send(Message message, MessageDeliveryMode deliveryMode, int priority, long timeToLive)
 {
     nativeMessageProducer.Send(message, deliveryMode, priority, timeToLive);
 }
Beispiel #17
0
 public void Send(IBytesMessage message, MessageDeliveryMode deliveryMode, MessagePriority priority, TimeSpan timeToLive)
 => Send(_info.Destination, message, deliveryMode, priority, timeToLive);
 public void Send(Destination dest, Message message, MessageDeliveryMode deliveryMode, int priority, long timeToLive)
 {
     throw new NotImplementedException();
 }
 public void Send(Message message, MessageDeliveryMode deliveryMode, int priority, long timeToLive)
 {
     target.Send(message, deliveryMode, priority, timeToLive);
 }
 public void Send(Destination dest, Message message, MessageDeliveryMode deliveryMode, int priority, long timeToLive)
 {
     target.Send(dest, message, deliveryMode, priority, timeToLive);
 }
 public static AbstractMessageBuilder SetDeliveryMode(this AbstractMessageBuilder builder, MessageDeliveryMode deliveryMode)
 {
     builder.SetHeader(RabbitMessageHeaders.DELIVERY_MODE, deliveryMode);
     return(builder);
 }
 public void Send(Destination dest, Message message, MessageDeliveryMode deliveryMode, int priority, long timeToLive)
 {
     throw new NotImplementedException();
 }
Beispiel #23
0
 public virtual AbstractMessageBuilder <T> SetDeliveryMode(MessageDeliveryMode deliveryMode)
 {
     Properties.DeliveryMode = deliveryMode;
     return(this);
 }