public Task ProcessAsync(ClientPipeContextMessage clientPipeContextMessage, ReadOnlyMemory <IClientPipe> pipeline)
        {
            clientPipeContextMessage.BasicProperties = clientPipeContextMessage.Channel !.CreateBasicProperties();
            if (clientPipeContextMessage.TryGetOptionalItemValue <string>(ContentTypeKeyName, out var messageContentType))
            {
                if (!_options.Serializers.TryGetValue(messageContentType, out var serializer))
                {
                    throw new SerializerNotFoundException($"Missing serializer for Content-Type: '{messageContentType}'");
                }

                clientPipeContextMessage.BasicProperties.ContentType = messageContentType;
                clientPipeContextMessage.SerializedMessage           = serializer.Invoke(clientPipeContextMessage.Message);
            }
            else if (_options.Serializer != null)
            {
                clientPipeContextMessage.BasicProperties.ContentType = _options.ContentType;
                clientPipeContextMessage.SerializedMessage           = _options.Serializer.Invoke(clientPipeContextMessage.Message);
            }
            else
            {
                throw new SerializerNotFoundException($"No default serializer defined. You need to define a default serializer if you don't specify message Content-Type");
            }

            return(ProcessNextAsync(clientPipeContextMessage, pipeline));
        }
        public Task ProcessAsync(ClientPipeContextMessage context, ReadOnlyMemory <IClientPipe> pipeline)
        {
            if (context.TryGetOptionalItemValue <int>(ContextItemExpirationKey, out var expiration))
            {
                context.BasicProperties !.Expiration = expiration.ToString();
            }
            else if (_expiration != null)
            {
                context.BasicProperties !.Expiration = _expiration;
            }

            return(ProcessNextAsync(context, pipeline));
        }
 public Task ProcessAsync(ClientPipeContextMessage clientPipeContextMessage, ReadOnlyMemory <IClientPipe> pipeline)
 {
     if (_deliveryMode.HasValue)
     {
         clientPipeContextMessage.BasicProperties !.DeliveryMode = (byte)_deliveryMode.Value;
     }
     clientPipeContextMessage.Channel !.BasicPublish(
         clientPipeContextMessage.ExchangeName,
         clientPipeContextMessage.RoutingKey,
         clientPipeContextMessage.Mandatory,
         clientPipeContextMessage.BasicProperties,
         clientPipeContextMessage.SerializedMessage
         );
     return(Task.CompletedTask);
 }
示例#4
0
 public async Task EnqueueMessageAsync(object message, Dictionary <string, object>?contextItems = null)
 {
     var pipeMessage = new ClientPipeContextMessage(message, contextItems);
     await ClientPipe.ExecutePipelineAsync(pipeMessage, _pipeline);
 }
示例#5
0
 public Task ProcessAsync(ClientPipeContextMessage clientPipeContextMessage, ReadOnlyMemory <IClientPipe> pipeline)
 {
     clientPipeContextMessage.ExchangeName = _exchangeName;
     clientPipeContextMessage.RoutingKey   = _routingKey;
     return(ProcessNextAsync(clientPipeContextMessage, pipeline));
 }