Beispiel #1
0
        public async Task Run()
        {
            var byteArray = Encoding.UTF8.GetBytes(
                JsonConvert.SerializeObject(
                    new SimpleIntegrationEvent
            {
                Content = DateTime.Now.ToString("HH:mm:ss.fff", CultureInfo.InvariantCulture)
            },
                    new JsonSerializerSettings
            {
                TypeNameHandling = TypeNameHandling.All
            }));

            var producer = _broker.GetProducer(
                new KafkaProducerEndpoint("silverback-examples-events")
            {
                Configuration = new KafkaProducerConfig
                {
                    BootstrapServers = "PLAINTEXT://localhost:9092"
                }
            });

            var headers = new MessageHeaderCollection
            {
                ["use-case"] = "pre-serialized"
            };

            await producer.ProduceAsync(byteArray, headers);
        }
Beispiel #2
0
        private static void Connect()
        {
            _producer = _broker.GetProducer(new KafkaProducerEndpoint("Topic1")
            {
                Configuration = new KafkaProducerConfig
                {
                    BootstrapServers = "PLAINTEXT://localhost:9092"
                }
            });

            _broker.Connect();

            Console.CancelKeyPress += (_, e) => { _broker.Disconnect(); };
        }
        public void HandleError_InboundMessage_MessageMoved()
        {
            var policy = _errorPolicyBuilder.Move(TestEndpoint.Default);

            policy.HandleError(new InboundMessage {
                Message = new TestEventOne()
            }, new Exception("test"));

            var producer = (TestProducer)_broker.GetProducer(TestEndpoint.Default);

            producer.ProducedMessages.Count.Should().Be(1);
        }
        public async Task Run()
        {
            var producer = _broker.GetProducer(
                new KafkaProducerEndpoint("silverback-examples-events")
            {
                Configuration = new KafkaProducerConfig
                {
                    BootstrapServers = "PLAINTEXT://localhost:9092"
                }
            });

            var headers = new MessageHeaderCollection
            {
                ["use-case"] = "empty-message"
            };

            await producer.ProduceAsync(null, headers);
        }
Beispiel #5
0
        public MoveMessageErrorPolicy(IBroker broker, IEndpoint endpoint, IServiceProvider serviceProvider, ILogger <MoveMessageErrorPolicy> logger, MessageLogger messageLogger)
            : base(serviceProvider, logger, messageLogger)
        {
            if (broker == null)
            {
                throw new ArgumentNullException(nameof(broker));
            }
            if (endpoint == null)
            {
                throw new ArgumentNullException(nameof(endpoint));
            }
            if (serviceProvider == null)
            {
                throw new ArgumentNullException(nameof(serviceProvider));
            }

            _producer      = broker.GetProducer(endpoint);
            _endpoint      = endpoint;
            _logger        = logger;
            _messageLogger = messageLogger;
        }
        public async Task HandleError_InboundMessage_MessageMoved()
        {
            var policy   = ErrorPolicy.Move(TestProducerEndpoint.GetDefault()).Build(_serviceProvider);
            var envelope = new InboundEnvelope(
                "hey oh!",
                new MemoryStream(),
                null,
                new TestOffset(),
                TestConsumerEndpoint.GetDefault(),
                TestConsumerEndpoint.GetDefault().Name);

            await policy.HandleErrorAsync(
                ConsumerPipelineContextHelper.CreateSubstitute(envelope, _serviceProvider),
                new InvalidOperationException("test"));

            var producer = (TestProducer)_broker.GetProducer(TestProducerEndpoint.GetDefault());

            producer.ProducedMessages.Should().HaveCount(1);
        }
Beispiel #7
0
        public void HandleError_InboundMessage_MessageMoved()
        {
            var policy  = _errorPolicyBuilder.Move(TestEndpoint.GetDefault());
            var message = new InboundMessage(
                new byte[1],
                null,
                null, TestEndpoint.GetDefault(), true)
            {
                Content = "hey oh!"
            };

            policy.HandleError(new[]
            {
                message
            }, new Exception("test"));
            var producer = (TestProducer)_broker.GetProducer(TestEndpoint.GetDefault());

            producer.ProducedMessages.Count.Should().Be(1);
        }
        public async Task <IEnumerable <EndpointCheckResult> > PingAllEndpoints()
        {
            if (!_broker.IsConnected)
            {
                return(Enumerable.Empty <EndpointCheckResult>());
            }

            var tasks = _outboundRoutingConfiguration.Routes
                        .Select(async route =>
            {
                try
                {
                    await _broker.GetProducer(route.DestinationEndpoint).ProduceAsync(PingMessage.New());
                    return(new EndpointCheckResult(route.DestinationEndpoint.Name, true));
                }
                catch (Exception ex)
                {
                    return(new EndpointCheckResult(route.DestinationEndpoint.Name, false,
                                                   $"[{ex.GetType().FullName}] {ex.Message}"));
                }
            });

            return(await Task.WhenAll(tasks));
        }
Beispiel #9
0
 public Task RelayMessage(IOutboundMessage message) =>
 _broker.GetProducer(message.Endpoint).ProduceAsync(message.Message, message.Headers);
 protected virtual Task ProduceMessage(IOutboundMessage message)
 => _broker.GetProducer(message.Endpoint).ProduceAsync(message.Message, message.Headers);
Beispiel #11
0
 protected virtual Task ProduceMessage(byte[] content, IEnumerable <MessageHeader> headers, IEndpoint endpoint)
 => _broker.GetProducer(endpoint).ProduceAsync(content, headers);