示例#1
0
        private void MessagePublish(Configuration.RabbitMQ configuration, PurchaseOrder order)
        {
            using var connection = Service.BootStrapBroker(configuration);
            var model = connection.CreateModel();

            model.BasicPublish(configuration.ExchangeName, "", true, null,
                               System.Text.Json.JsonSerializer.SerializeToUtf8Bytes(order));
        }
示例#2
0
 public ConsumerOf(IMessageHandlerOf <T> messageHandler,
                   Configuration.RabbitMQ configuration,
                   CancellationToken cancellationToken,
                   ILogger logger)
 {
     _messageHandler    = messageHandler;
     _configuration     = configuration;
     _cancellationToken = cancellationToken;
     _logger            = logger;
 }
        private void MessagePublish(PurchaseOrder order, Configuration.RabbitMQ rabbitMqConfiguration)
        {
            using var connection = Service.BootStrapBroker(rabbitMqConfiguration);
            var model           = connection.CreateModel();
            var basicProperties = model.CreateBasicProperties();

            basicProperties.ContentType     = "application/json";
            basicProperties.ContentEncoding = "UTF-8";
            basicProperties.MessageId       = _messageId.ToString();
            basicProperties.Timestamp       = new AmqpTimestamp(_referralDate);
            basicProperties.Type            = "urn:message:fulfillment:purchaseorder";
            model.BasicPublish(rabbitMqConfiguration.ExchangeName, "", true, basicProperties,
                               System.Text.Json.JsonSerializer.SerializeToUtf8Bytes(order));
        }
示例#4
0
        internal static IConnection BootStrapBroker(Configuration.RabbitMQ configuration)
        => new ConnectionFactory
        {
            AutomaticRecoveryEnabled = true,
            DispatchConsumersAsync   = true,
            TopologyRecoveryEnabled  = true,
            ClientProvidedName       = typeof(Service).AssemblyQualifiedName,
            Port        = configuration.Port,
            VirtualHost = configuration.VirtualHost,
            UserName    = configuration.UserName,
            Password    = configuration.Password,
            UseBackgroundThreadsForIO = true
        }

        .CreateConnection(configuration.Hosts);
示例#5
0
        private async Task <ConsumerOf <PurchaseOrder> > BootstrapConsumer(ISession session,
                                                                           IConnection connection,
                                                                           Configuration.RabbitMQ rabbitMqConfiguration)
        {
            var consumer = new ConsumerOf <PurchaseOrder>(
                new PurchaseOrderHandler(session,
                                         await session.PrepareAsync(PurchaseOrderHandler.InsertCql)
                                         .ConfigureAwait(false)),
                rabbitMqConfiguration,
                _cancellationTokenSource.Token,
                _logger);

            consumer.Start(connection);
            return(consumer);
        }
示例#6
0
 private UInt32 GetMessageCount(Configuration.RabbitMQ configuration, String queueName)
 {
     using var connection = Service.BootStrapBroker(configuration);
     using var channel    = connection.CreateModel();
     return(channel.MessageCount(queueName));
 }