Как я могу исправить 'значение, которое уже присутствует: AMQChannel (amqp: // guest @ 0: 0: 0: 0: 0: 0: 0: 1: 5672 /, 1)' - PullRequest
0 голосов
/ 16 января 2019

Я программирую клиентское приложение сервера RabbitMQ. Я хочу сохранить клиентский канал в BiMap с именем. Работает, но если есть два клиента, возникает ошибка

java.lang.IllegalArgumentException: value already present: AMQChannel(amqp://guest@0:0:0:0:0:0:0:1:5672/,1)
    at com.google.common.collect.HashBiMap.put(HashBiMap.java:279)
    at com.google.common.collect.HashBiMap.put(HashBiMap.java:260)
    at net.skillergames.skillercloud.rabbitmq.RabbitManager.handlePacket(RabbitManager.java:48)
    at net.skillergames.skillercloud.rabbitmq.RabbitConnection$1.handleDelivery(RabbitConnection.java:52)
    at net.skillergames.skillercloud.rabbitmq.PacketConsumer.handleDelivery(PacketConsumer.java:26)
    at com.rabbitmq.client.impl.ConsumerDispatcher$5.run(ConsumerDispatcher.java:149)
    at com.rabbitmq.client.impl.ConsumerWorkService$WorkPoolRunnable.run(ConsumerWorkService.java:104)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Я уже пробовал это с обычной хэш-картой, но я не могу повернуть ее с помощью .inverse ()

public void handlePacket(Channel channel, Packet packet) {
  byte packetID = packet.getId();
  Document data = packet.getData();
  switch(packetID) {
    case 0x01:
      String serverName = data.getString("serverName");
      getChannels().put(data.getString("serverName").replace("Proxy|","").replace("Server|", ""), channel);

Вывод: канал уже зарегистрирован, как я могу сохранить каналы, чтобы я мог получить каждый с именем и наоборот

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...