Я программирую клиентское приложение сервера 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);
Вывод: канал уже зарегистрирован, как я могу сохранить каналы, чтобы я мог получить каждый с именем и наоборот