*Exchange에서 Topic또는 direct를 사용할 경우 Routing Key를 명시한다. 만약 amq.topic이라는 Exchange를 사용하여 chat큐에 메시지를 전송할 경우 클라이언트의 Publish측에서는 basicPublish("amq.topic","chat",null,바이트내용); 으로 보내주면 된다.(단, 이경우 amq.topic이라는 Exchange가 rabbitmq서버에 만들어져있는 경우이다. 없다면 Exchange를 만들어 주어야 한다.) 이는 amq.topic에서 chat라는 라우팅키를 가지는 메시지를 전송한다는 의미이다. 그렇다면 Consumer측에서는 어떻게 수신할까? 이 부분에서 상당히 본인의 경우는 많은 시간을 할애해야 했다...... 클라이언트측에 Consumer에서는 channel.queueBind(q.getQueue(), "amq.topic" , "#.chat" ); 이런식으로 만들었는데, 이는 Consumer인 내가 amq.topic이라는 exchange로 부터 오는 "#.chat"라는 라우팅키를 가지고 있는 (즉, Publish에서 .chat로 끝나는 라우팅키로 전송한것) 메시지를 channel과 연결되어있는 queue로 부터 받겠다. 라는 의미이다. 만약 그런 큐가 존재하지 않으면 임의로 rabbitmq서버 측에서 생성해버린다. 그 이유는 분명히 chat라는 큐가 존재하고 "chat" 라우팅키로 연결되어 있었다. 하지만 저 문장을 다시 실행해보니 chat라는 큐에 #.chat라는 라우팅키를 가지는 통로가 새로 생겼다. 즉, 메시지를보내는 입장에서는 메시지의 내용과 Exchange와 라우팅키만 신경쓰면되는것이다. 메시지를 수신하는 측은 라우팅키와 Exchange만 신경쓰면된다. 또한 중요한 점은 메시지를 수신하는 측은 수신측 마음대로 큐를 생성해도 된다. ...