PublishMessages 메서드는 AMQP 서버로 메시지를 보내는 데 사용돼요.
AMQP 서버는 큐 이름을 라우팅 키로 사용해 큐를 "direct" 익스체인지에 자동으로 바인딩해요. 이를 통해 바인딩을 선언하지 않고도 특정 큐로 메시지를 보낼 수 있어요(PublishMessage 메서드를 호출하면서 Exchange 인자를 빈 값으로, RoutingKey 인자에 큐 이름을 전달하면 돼요).
메시지 발행
메서드는 다음 인자를 가져요.
- ChannelName: 채널 이름(이 메서드를 호출하기 전에 열려 있어야 해요).
- ExchangeName: 익스체인지 이름. 255자를 초과할 수 없고 "amq."로 시작할 수 없어요(passive 매개변수가 true인 경우 제외).
- RoutingKey: 바인딩의 라우팅 키 이름.
- Mandatory: true이고 메시지를 어떤 큐로도 라우팅할 수 없으면 서버가 메시지를 반환하고, OnAMQPBasicReturn 이벤트가 발생해요.
- Immediate: true이고 메시지를 어떤 큐로도 라우팅할 수 없으면 서버가 메시지를 반환하고, OnAMQPBasicReturn 이벤트가 발생해요.
AMQP.PublishMessage('channel_name', 'exchange_name', 'routing_key', 'Hello from sgcWebSockets!!!');
procedure OnAMQPBasicReturn(Sender: TObject; const aChannel: string; const aReturn: TsgcAMQPFramePayload_Method_BasicReturn; const aContent: TsgcAMQPMessageContent);
begin
DoLog('#AMQP_basic_return: ' + aChannel + ' ' + IntToStr(aReturn.ReplyCode) + ' ' + aReturn.ReplyText + ' ' + aContent.Body.AsString);
end;
