Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 

36 rader
1.0 KiB

  1. using EasyNetQ;
  2. using EasyNetQ.Topology;
  3. using JT808.DotNetty.Abstractions;
  4. using Microsoft.Extensions.Options;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace JT808.DotNetty.RabbitMQ
  10. {
  11. public class JT808MsgProducer : IJT808MsgProducer
  12. {
  13. public string TopicName { get; }
  14. private readonly IBus bus;
  15. public JT808MsgProducer(IOptions<JT808ProducerConfig> producerConfigAccessor)
  16. {
  17. bus = RabbitHutch.CreateBus(producerConfigAccessor.Value.ConnectionString);
  18. TopicName = producerConfigAccessor.Value.TopicName;
  19. }
  20. public void Dispose()
  21. {
  22. bus.Dispose();
  23. }
  24. public Task ProduceAsync(string terminalNo, byte[] data)
  25. {
  26. var exchange = bus.Advanced.ExchangeDeclare(TopicName, ExchangeType.Fanout);
  27. bus.Advanced.Publish(exchange, "", false, new Message<byte[]>(data));
  28. return Task.CompletedTask;
  29. }
  30. }
  31. }