@Override public String amqpRegister(User user) throws Exception { try { Channel rabbitMqChannel = rabbitMqConnection.createChannel(); // create or get user queue AMQP.Queue.DeclareOk queue = rabbitMqChannel.queueDeclare( "USER_".concat(String.valueOf(user.hashCode())), true, // durable false, // exclusive false, // auto delete null // no arguments ); Map<String, Object> bindParams = new HashMap<>(); bindParams.put(ARGUMENT_TO_ID, user.getId()); rabbitMqChannel.queueBind(queue.getQueue(), amqpExchange, "", bindParams); channelListener.registerChannel(rabbitMqChannel, queue.getQueue(), false); // add user channel to active channels USER_CHANNEL.put(user, rabbitMqChannel); return queue.getQueue(); } catch (Exception e) { logger.info("### Couldn't create user queue .. -> {" + e.getMessage() + "}"); throw e; } }
@Override public void amqpUnRegister(User user) throws Exception { Channel channel = USER_CHANNEL.get(user); if (channel != null) { logger.info("###Unregistering user [" + user.getUsername() + "] ... "); // delete queue channel.queueDelete("USER_".concat(String.valueOf(user.hashCode()))); USER_CHANNEL.remove(user); // close channel channel.close(); } logger.info("###Unregistering user [" + user.getUsername() + "] Success !"); }