이 절에서는 다음 항목에 대해 설명합니다.
메시지 저장소에서 발생하는 다양한 종류의 이벤트에 대해 알림 메시지를 생성할 수 있습니다. 예를 들어, 사용자가 로그인하면 Login 메시지를 생성하여 Message Queue 브로커에 전달할 수 있습니다.
configutil 매개 변수는 생성할 각 메시지 종류를 지정합니다. 메시지를 생성하는 이벤트는 다양한 configutil 매개 변수를 구성하여 결정합니다. configutil 매개 변수는 하나 이상의 JMQ 알림 플러그 인 라이브러리에서 참조됩니다.
모든 메시지는 대상 유형이 "topic" 또는 "queue" 중 어느 것으로 설정되었는지에 따라 항목 또는 대기열에 전달됩니다. Message Queue 대상을 구성하는 방법에 대한 자세한 내용은 JMQ 알림 플러그 인 구성 방법을 참조하십시오.
각 메시지는 다음 메시지 헤더로 식별됩니다.
MQ_MESSAGE_TYPE_HEADER_PROPERTY
JMQ 알림 플러그 인은 다음 표에 표시된 메시지를 지원합니다.
이런 메시지를 활성화하는 configutil 매개 변수의 목록은 22.3.4 configutil 매개 변수의 기본값 을 참조하십시오.
표 22–1 JMQ 알림 메시지
알림 메시지 |
설명 |
---|---|
DeleteMsg |
“삭제됨”으로 표시된 메시지가 메일함에서 제거됩니다. IMAP expunge와 동일합니다. |
Login |
사용자가 IMAP, HTTP 또는 POP에서 로그인했습니다. (이 메시지는 configutil 매개 변수 local.store.notifyplugin.*.LogUser.enable로 활성화됩니다.) |
Logout |
사용자가 IMAP, HTTP 또는 POP에서 로그아웃했습니다. (이 메시지는 configutil 매개 변수 local.store.notifyplugin.*.LogUser.enable로 활성화됩니다.) |
MsgFlags |
메시지의 메시지 플래그가 변경되었습니다. 이 메시지와 함께 이전 플래그와 새 플래그가 전달됩니다. |
NewMsg |
시스템에서 사용자의 메일함으로 새 메시지를 받았습니다. 메시지 헤더와 본문을 포함할 수 있습니다. |
OverQuota |
사용자의 메일함이 할당량(diskquota, msgquota) 중 하나를 초과했기 때문에 작업이 실패했습니다. MTA 채널은 할당량이 변경되거나 사용자의 메일함 수가 할당량 아래로 떨어질 때까지 메시지를 보관합니다. MTA에 보관되어 있는 동안 메시지가 만료되면 정리됩니다. |
PurgeMsg |
서버 프로세스 imexpire에 의해 메일함에 있는 메시지가 정리되었습니다(날짜 만료). 이것이 서버측 정리이고 DeleteMsg가 클라이언트측 정리입니다. 진정한 의미의 제거라고는 할 수 없습니다. |
ReadMsg |
메일함에 있는 메시지를 읽었습니다. (IMAP 프로토콜에서 메시지가 조회로 표시되었습니다.) |
TrashMsg |
IMAP 또는 HTTP에 의해 메시지가 삭제 표시되었습니다. 메일 클라이언트의 구성에 따라 폴더에 있는 메시지가 사용자에게 계속 보일 수도 있습니다. 정리를 수행하면 메시지가 폴더에서 제거됩니다. |
UnderQuota |
할당량이 할당량 초과 상태에서 정상 상태로 돌아왔습니다. |
UpdateMsg |
IMAP 작업에 의해 메시지가 메일함에 추가되었습니다. 예를 들어, 사용자가 전자 메일 메시지를 메일함에 복사했습니다. 메시지 헤더와 본문을 포함할 수 있습니다. |
다음 규칙 및 지침이 지원되는 알림 메시지에 적용됩니다.
대부분의 알림 메시지 텍스트는 하나의 빈 공간입니다. (Message Queue에서 빈 메시지 본문이 허용되지 않기 때문에 빈 공간을 사용합니다.)예외는 다음과 같습니다.
maxHeaderSize 매개 변수로 구성하는 경우 NewMsg, UpdateMsg 및 DeleteMsg 메시지에는 메시지 헤더를 포함할 수 있습니다. maxHeaderSize를 0보다 큰 값으로 설정해야 합니다.
DeleteMsg 메시지에 메시지 헤더를 포함하려면 ExpungeHeaders 매개 변수 값도 1로 설정해야 합니다.
maxBodySize 매개 변수로 구성하는 경우 NewMsg 및 UpdateMsg 메시지에는 메시지 본문을 포함할 수 있습니다. maxBodySize를 0보다 큰 값으로 설정해야 합니다.
NewMsg 및 UpdateMsg의 경우에는 기본적으로 메시지 본문이 전달되지 않습니다(꺼짐). 따라서 Message Queue의 오버로드가 방지됩니다. 다른 메시지에는 메시지 본문이 포함되지 않습니다.
INBOX만 변경된 경우 또는 INBOX와 다른 모든 폴더가 변경된 경우에 알림 메시지를 생성할 수 있습니다. 다음 구성 매개 변수가 INBOX만 변경된 경우(값 = 0) 또는 INBOX와 다른 모든 폴더가 변경된 경우(값 = 1) 허용됩니다.
local.store.notifyplugin.jmqnotify.noneInbox.enable
기본 설정은 INBOX에서만(값 = 0) 메시지를 생성하는 것입니다.
폴더를 선택하는 기법은 없습니다. 변수를 활성화하면(값 = 1) 모든 폴더가 포함됩니다.
NewMsg 알림은 “서버에서 메시지를 받아 메시지 대기열에 넣은 후”가 아니라 사용자 메일함에 메시지가 보관된 후에만 발생합니다.
POP3 클라이언트 액세스에 대해서는 메시지가 생성되지 않습니다.
XNOTNOTIFY를 실행하면 모든 메시지를 억제할 수 있습니다. 예를 들어 관리에만 사용되던 IMAP 스크립트(사용자에게는 알리지 않음)에서 이를 실행하면 모든 메시지를 억제할 수 있습니다.
알림은 텍스트 메시지, 음성 메시지 및 이미지 데이터 등의 여러 메시지 유형에 대해 상태 정보를 전달할 수 있습니다. 같은 메일 폴더에 이러한 서로 다른 메시지 유형을 저장하려는 경우도 많습니다. 예를 들어, 사용자 휴대폰의 받은 메일함에 새로운 텍스트 메시지와 음성 메시지가 도착하는 경우가 있습니다.
이런 메시지 유형을 구성하려면 store.messagetype.enable과 같은 configutil 명령을 사용합니다. 메시지 유형의 구성 및 관리에 대한 자세한 내용은 “18장: 메시지 저장소 관리”에 있는 “메시지 유형 관리”를 참조하십시오.
메시지 유형을 구성하고 나면 JMQ 알림 메시지에서 특정 메시지 유형을 식별할 수 있습니다. 메시지 유형별로 알림 메시지를 해석하고 각 유형에 대한 상태 정보를 메일 클라이언트로 전달하도록 Message Queue 클라이언트를 작성할 수 있습니다.
예를 들어, 서로 다른 여러 유형의 새 메시지가 사용자의 메일함에 도착하는 경우를 가정할 수 있습니다. NewMsg 알림 메시지는 예를 들어 새 음성 메일 메시지 7개와 새 텍스트 메시지 4개가 사용자의 받은 메일함에 있다고 알리는 데이터를 전달할 수 있습니다.
다음 알림 메시지는 특정 메시지 유형을 추적하는 정보를 전달할 수 있습니다.
NewMsg UpdateMsg ReadMsg TrashMsg DeleteMsg PurgeMsg OverQuota UnderQuota |
JMQ 알림 기능에서는 현재 메일함에 있는 메시지의 수를 메시지 유형별로 계산합니다. 수 값이 하나 전달되는 대신 각 메시지 유형의 수를 지정하는 배열이 알림 메시지와 함께 전달됩니다.
메시지별 개수 값은 numMsgs 등록 정보를 통해 알림 메시지와 함께 전달됩니다. ReadMsg 및 TrashMsg 알림 메시지의 경우 조회된 메시지의 수(numSeen)와 삭제됨으로 표시된 수(numDeleted) 역시 메시지 유형별로 계산됩니다.
Event Notification Service는 메시지 유형을 지원하지 않습니다. 메시지 유형에 대한 정보를 전달하려면 JMQ 알림 플러그 인을 사용하십시오.
알림 메시지와 Message Queue에 필요한 구성 정보는 configutil 매개 변수로 구성됩니다.
표 22–2에는 이런 매개 변수와 그 기본값이 나와 있습니다.
configutil 매개 변수에 대한 자세한 정의는 Sun Java System Messaging Server Administration Reference의 "3장: Messaging Server Configuration"을 참조하십시오.
표 22–2 configutil 매개 변수 및 기본값
configutil 매개 변수 |
기본값 |
---|---|
local.store.notifyplugin.*.maxBodySize |
0 — 비활성화 |
local.store.notifyplugin.*.maxHeaderSize |
0 — 비활성화 |
local.store.notifyplugin.*.NewMsg.enable |
1 — 활성화 |
local.store.notifyplugin.*.UpdateMsg.enable |
1 — 활성화 |
local.store.notifyplugin.*.ReadMsg.enable |
1 — 활성화 |
local.store.notifyplugin.*.DeleteMsg.enable |
1 — 활성화 |
local.store.notifyplugin.*.PurgeMsg.enable |
1 — 활성화 |
local.store.notifyplugin.*.LogUser.enable |
1 — 활성화 |
local.store.notifyplugin.*.MsgFlags.enable |
0 — 비활성화 |
local.store.notifyplugin.*.noneInBox.enable |
0 — 비활성화 |
local.store.notifyplugin.*.jmqHost |
“127.0.0.1” |
local.store.notifyplugin.*.jmqPort |
7676 |
local.store.notifyplugin.*.jmqTopic |
“JES-MS” |
local.store.notifyplugin.*.jmqQueue |
“JES-MS” |
local.store.notifyplugin.*.jmqUser |
“guest” |
local.store.notifyplugin.*.jmqPwd |
“guest” |
local.store.notifyplugin.*.destinationtype |
“topic” |
local.store.notifyplugin.*.Priority |
4 |
local.store.notifyplugin.*.ttl |
0 — 메시지가 시간 초과되지 않음을 나타냅니다. |
local.store.notifyplugin.*.Persistent |
1 — 활성화 |
모든 메시지는 등록 정보에 정의된 추가 정보를 전달합니다. 메시지마다 다른 등록 정보가 있습니다. 예를 들어, NewMsg는 새 메시지의 IMAP uid를 나타냅니다.
표 22–3에서는 표준 알림 메시지 등록 정보에 대해 설명합니다. 이 등록 정보는 모든 JMS 메시지에 있습니다.
표 22–3 표준 알림 메시지 등록 정보
등록 정보 |
데이터 유형 |
설명 |
---|---|---|
hostname |
ConstMQString |
메시지를 생성한 시스템의 호스트 이름입니다. |
pid |
MQInt32 |
메시지를 생성한 프로세스의 ID입니다. |
process |
ConstMQString |
메시지를 생성한 프로세스의 이름을 지정합니다. |
timestamp |
MQFloat64 |
기준 시점(GMT로 1970년 1월 1일 자정)으로부터 지난 시간(밀리초)을 지정합니다. |
표 22–4에서는 특정 알림 메시지와 함께 전달되는 등록 정보에 대해 설명합니다.
각 메시지에는 아래 표에 표시된 등록 정보의 일부가 포함됩니다. 각 메시지에 연결된 등록 정보의 목록은 표 22–5를 참조하십시오.
표 22–4 특정 알림 메시지에만 해당되는 등록 정보
등록 정보 |
데이터 유형 |
설명 |
---|---|---|
client |
ConstMQString |
메시지에 연결된 Message Queue 클라이언트의 IP 주소입니다. |
diskquota |
MQInt32 |
메시지에 연결된 사용자의 디스크 공간 할당량(KB)입니다. 값이 -1로 설정되면 할당량이 없는 것을 나타냅니다. |
diskquotaused |
MQInt32 |
메시지와 연결된 사용자가 사용하는 디스크 공간 크기(KB)입니다. |
hdrLen |
MQInt32 |
메시지 헤더의 크기입니다. 메시지 본문에 있는 헤더가 잘렸을 수도 있기 때문에 해당 헤더의 크기와 이 값이 다를 수도 있습니다. |
imapUid |
MQInt32 |
메시지와 연결된 IMAP uid 등록 정보입니다. |
lastUid |
MQInt32 |
메일함에 사용된 마지막 IMAP uid 값입니다. |
mailboxName |
ConstMQstring |
이벤트와 연결된 메시지 저장소 메일함 이름입니다. mailboxName에는 다음 형식 중 하나가 지정됩니다. 여기서 uid는 사용자의 고유 식별자입니다. uid — 기본(주) 도메인에 있는 사용자의 받은 메일함을 식별합니다. uid@domain — 호스트된 도메인에 있는 사용자의 받은 메일함을 식별합니다. uid/mailboxname — 기본 도메인에 있는 사용자의 최상위 메일함을 식별합니다. uid@domain/mailboxname — 호스트된 도메인에 있는 사용자의 최상위 메일함을 식별합니다. uid/foldername/mailboxname — 기본 도메인에 있는 사용자 폴더의 메일함을 식별합니다. uid@domain/foldername/mailboxname — 호스트된 도메인에 있는 사용자 폴더의 메일함을 식별합니다. |
msgquota |
MQInt32 |
최대 메시지 수에 대한 사용자의 할당량입니다. 값이 -1로 설정되면 할당량이 없는 것을 나타냅니다. |
newflags |
ConstMQString |
현재 작업으로 인해 플래그가 변경된 후에 사용자의 메일함 메시지에 설정되는 플래그입니다. MsgFlags 알림 메시지가 생성된 경우에는 항상 이 등록 정보가 oldflags와 함께 존재합니다. newflags의 구문과 값은 이 표 아래 있는 newflags 및 oldflags 등록 정보의 구문을 참조하십시오. |
numDeleted |
MQInt32 |
메일함에서 삭제됨으로 표시된 메시지의 수입니다. 이 수는 메일함 소유자가 삭제한 메시지의 수를 계산합니다. 다른 사용자가 메일함에 액세스할 수 있는 경우 메일함에서 다른 사용자가 수행하는 작업은 이 수에 포함되지 않습니다. (다른 사용자의 작업으로 DeleteMsg 등의 알림이 트리거될 수는 있습니다.) |
numDeletednn |
MQInt32 |
메일함에서 삭제됨으로 표시된 메시지의 총 수를 나타내며, 각 메시지 유형별로 지정됩니다. 메시지 유형이 구성된 경우 numDeletednn 등록 정보는 각 메시지 유형 nn에 대한 수를 전달합니다. numDeleted 등록 정보는 항상 전달됩니다. 이 등록 정보는 모든 유형을 포함하여 삭제됨으로 표시된 모든 메시지의 총 수를 계산합니다. 예를 들어 20개의 메시지가 삭제됨으로 표시된 경우 10개가 유형 3이고, 7개가 유형 16이고, 나머지 메시지의 유형은 인식되지 않았다면 알림과 함께 다음 등록 정보 및 수 값이 전달됩니다. numDeleted=20 numDeleted3=10 numDeleted16=7 |
numMsgs |
MQInt32 |
현재 메일함에 있는 총 메시지 수입니다. |
numMsgsnn |
MQInt32 |
현재 메일함에 있는 메시지의 총 수를 나타내며 각 메시지 유형별로 지정됩니다. 메시지 유형이 구성된 경우 numMsgsnn 등록 정보는 각 메시지 유형 nn에 해당하는 개수를 전달합니다. numMsgs 등록 정보는 항상 전달됩니다. 이 등록 정보는 모든 유형을 포함하여 메일함에 있는 모든 메시지의 총 수를 나타냅니다. 예를 들어, 현재 메일함에 20개의 메시지가 있는 경우 10개가 유형 3이고, 7개가 유형 16이고, 나머지 메시지의 유형은 인식되지 않았다면 알림과 함께 다음 등록 정보 및 수 값이 전달됩니다. numMsgs=20 numMsgs3=10 numMsgs16=7 |
numSeen |
MQInt32 |
메일함에서 조회(읽음)로 표시된 메시지의 수입니다. 이 수는 메일함 소유자가 읽은 메시지의 수를 계산합니다. 다른 사용자가 메일함에 액세스할 수 있는 경우 메일함에서 다른 사용자가 수행하는 작업은 이 수에 포함되지 않습니다. (다른 사용자의 작업으로 ReadMsg 등의 알림이 트리거될 수는 있습니다). |
numSeennn |
MQInt32 |
메일함에서 조회(읽음)으로 표시된 메시지의 총 수를 나타내며, 각 메시지 유형별로 지정됩니다. 메시지 유형이 구성된 경우 numSeennn 등록 정보는 각 메시지 유형 nn에 해당하는 개수를 전달합니다. numSeen 등록 정보는 항상 전달됩니다. 여기서는 모든 유형을 총괄하여 조회로 표시된 모든 메시지의 수를 나타냅니다. 예를 들어 20개의 메시지가 조회로 표시된 경우 10개가 유형 3이고, 7개가 유형 16이고, 나머지 메시지의 유형은 인식되지 않았다면 알림과 함께 다음 등록 정보 및 수 값이 전달됩니다. numSeen=20 numSeen3=10 numSeen16=7 |
numSeenDeleted |
MQInt32 |
메일함에서 조회(읽음)으로 표시되고 삭제됨으로 표시된 메시지의 수입니다. 이 값은 읽음으로 표시되고 메일함 소유자에 의해 삭제된 메시지의 수를 나타냅니다. 다른 사용자가 메일함에 액세스할 수 있는 경우 메일함에서 다른 사용자가 수행하는 작업은 이 수에 포함되지 않습니다. (하지만 다른 사용자의 작업으로 ReadMsg 및 DeleteMsg와 같은 알림이 트리거될 수는 있습니다). |
numSeenDeletednn |
MQInt32 |
메일함에서 조회(읽음)으로 표시되고 삭제됨으로 표시된 메시지의 총 수를 나타내며, 각 메시지 유형별로 지정됩니다. 메시지 유형이 구성된 경우 numSeenDeletednn 등록 정보는 각 메시지 유형 nn에 해당하는 개수를 전달합니다. numSeenDeleted 등록 정보는 항상 전달됩니다. 이 등록 정보는 모든 유형을 포함하여 읽음 및 삭제됨으로 표시된 모든 메시지의 총 수를 나타냅니다. 예를 들어 20개의 메시지가 읽음 및 삭제됨으로 표시된 경우 10개가 유형 3이고, 7개가 유형 16이고, 나머지 메시지의 유형은 인식되지 않았다면 알림과 함께 다음 등록 정보 및 수 값이 전달됩니다. numSeenDeleted=20 numSeenDeleted3=10 numSeenDeleted16=7 |
oldflags |
ConstMQString |
현재 작업으로 인해 플래그가 변경되기 전에 사용자의 메일함 메시지에 설정되었던 플래그입니다. MsgFlags 알림 메시지가 생성된 경우에는 항상 이 등록 정보가 newflags와 함께 존재합니다. oldflags의 구문과 값은 이 표 아래 있는 newflags 및 oldflags 등록 정보의 구문을 참조하십시오. |
quotaRoot |
ConstMQString |
이 값은 사용자 이름, 폴더 이름 또는 메시지 유형이 될 수 있습니다. |
size |
MQInt32 |
메시지의 크기입니다. 본문은 보통 메시지가 잘린 버전이기 때문에 이 값은 메시지 본문의 크기와 다를 수 있습니다. |
uidValidity |
MQInt32 |
IMAP uid 유효성 등록 정보입니다. |
userid |
ConstMQString |
메시지와 연결된 사용자 아이디입니다. |
가입자는 메시지 참조를 구문 분석할 때 기록되지 않은 등록 정보를 허용해야 합니다. 그러면 이후에 새 등록 정보가 추가되어도 호환성을 유지할 수 있습니다.
newflags 및 oldflags 등록 정보는 5자로 된 문자열입니다. 문자열에는 다음 값이 있어야 합니다.
/answered 플래그가 설정된 경우 첫 문자는 "A"입니다. 설정되지 않은 경우 비어 있습니다(“ “).
/flagged 플래그가 설정된 경우 둘째 문자는 "F"입니다. 설정되지 않은 경우 비어 있습니다(“ “).
/deleted 플래그가 설정된 경우 셋째 문자는 "D"입니다. 설정되지 않은 경우 비어 있습니다(“ “).
/seen 플래그가 설정된 경우 넷째 문자는 "S"입니다. 설정되지 않은 경우 비어 있습니다(“ “).
/draft 플래그가 설정된 경우 다섯째 문자는 "R"입니다. 설정되지 않은 경우 비어 있습니다(“ “).
표 22–5에서는 각 알림 메시지와 연결된 등록 정보가 표시되어 있습니다.
예를 들어 TrashMsg 메시지에 적용되는 등록 정보를 보려면 "ReadMsg, TrashMsg"의 열 헤더를 살펴 봅니다.TrashMsg 메시지에는 표준 등록 정보 외에도 mailboxName, numMsgs, uidValidity, numSeen 및 numDeleted를 사용할 수 있습니다.
표 22–5 각 알림 메시지와 함께 전달되는 등록 정보
등록 정보 |
NewMsg, UpdateMsg |
ReadMsg, TrashMsg |
DeleteMsg, PurgeMsg |
MsgFlags
|
Login, Logout |
OverQuota, UnderQuota |
---|---|---|---|---|---|---|
client |
아니요 |
아니요 |
아니요 |
아니요 |
예 |
아니요 |
diskquota |
아니요 |
아니요 |
아니요 |
아니요 |
아니요 |
예 |
diskquotaused |
아니요 |
아니요 |
아니요 |
아니요 |
아니요 |
예 |
hdrLen |
예 |
아니요 |
아니요 |
예 |
아니요 |
아니요 |
hostname |
예 |
예 |
예 |
예 |
예 |
예 |
imapUid |
예 |
아니요 |
예 |
예 |
아니요 |
아니요 |
lastUid |
아니요 |
아니요 |
예 |
아니요 |
아니요 |
아니요 |
mailboxName |
예 |
예 |
예 |
예 |
아니요 |
아니요 |
msgquota |
아니요 |
아니요 |
아니요 |
아니요 |
아니요 |
예 |
newflags |
아니요 |
아니요 |
아니요 |
예 |
아니요 |
아니요 |
numDeleted |
예 |
예 |
예 |
아니요 |
아니요 |
아니요 |
numDeletedn |
예* |
예* |
예* |
아니요 |
아니요 |
아니요 |
numMsgs |
예 |
예 |
예 |
아니요 |
아니요 |
예 |
numMsgsn |
예* |
예* |
예* |
아니요 |
아니요 |
아니요 |
numSeen |
예 |
예 |
예 |
아니요 |
아니요 |
아니요 |
numSeenn |
예* |
예* |
예* |
아니요 |
아니요 |
아니요 |
numSeenDeleted |
예 |
예 |
예 |
아니요 |
아니요 |
아니요 |
numSeenDeletedn |
예* |
예* |
예* |
아니요 |
아니요 |
아니요 |
oldflags |
아니요 |
아니요 |
아니요 |
예 |
아니요 |
아니요 |
Owner |
아니요 |
예 |
아니요 |
아니요 |
아니요 |
아니요 |
pid |
예 |
예 |
예 |
예 |
예 |
예 |
process |
예 |
예 |
예 |
예 |
예 |
예 |
quotaRoot |
아니요 |
아니요 |
아니요 |
아니요 |
아니요 |
예 |
size |
예 |
아니요 |
아니요 |
아니요 |
아니요 |
아니요 |
timestamp |
예 |
예 |
예 |
예 |
예 |
예 |
uidValidity |
예 |
예 |
예 |
예 |
아니요 |
아니요 |
userid |
아니요 |
예 |
아니요 |
아니요 |
예 |
예 |
* numDeletedn, numMsgs n, numSeenn 및 numSeenDeletedn 등록 정보는 메시지 저장소에 메시지 유형이 정의된 경우에만 알림과 함께 전달됩니다.