2009-07-20 5 views
0

MSMQ로 메시지를 보내도록 WCF 서비스를 만들었습니다. 메시지가 전송 된 것처럼 보이지만 대기열을 볼 때 그 메시지가없는 것처럼 보입니다. 확인했는데 대기열이 트랜잭션 대기열이 아닙니다. 모든 사람들이 메시지를 보낼 수 있도록 보안이 열려 있지만 보안을 설정할 다른 장소가 있는지 궁금합니다. 여기에 내가 사용하고있는 코드가있다.WCF 서비스를 사용하여 MSMQ에 메시지 보내기

Dim mq As MessageQueue 
Dim msg As Message 
Dim queueName As String = "webdevbvm.labsafety.com\emailsubscriptions" 

Try 
    msg = New Message("Test") 
    msg.Priority = MessagePriority.Highest 

    If (MessageQueue.Exists(queueName)) Then 
     mq = New MessageQueue(queueName) 
    msg.ResponseQueue = mq 
    msg.UseJournalQueue = True 
    msg.Label = "Test Message" 
    msg.Body = "This is only a test" 
    mq.Send(msg) 
    Console.WriteLine("Message sent.") 
    End If 
Catch ex As MessageQueueException 
    Console.WriteLine("MSMQ Error: " + ex.ToString()) 
Catch ex As Exception 
    Console.WriteLine("Error: " + ex.ToString()) 
Finally 
    mq.Close() 
End Try 

오류는 발생하지 않지만 프로그램을 실행중인 컴퓨터의 보내는 큐에 메시지가 표시됩니다. 그것은 대기열이 존재하는 것을 보여줍니다. 그리고 존재하지 않는 대기열 이름을 변경하면 IF 문에 들어 가지 않습니다. 그래서 대기열을보고있는 것이 파일을 보내지 않고 있다는 것을 알 수 있습니다. 도움이된다면 랩톱에서 프로그램을 로컬로 실행하고 대기열은 Windows 2003 서버에서도 전송됩니다. 나에게 WCF 서비스처럼 보이지 않는

+0

"보낸 메시지"가 표시됩니까? 당신의 console.writeline 명령에서? –

+0

대기열이 없으면 어떻게됩니까? ru-roh ...... 붐. (psst : 대기열을 만들려면 수표를 추가하십시오 (존재하지 않는 경우) 또는 오류로 처리하십시오). –

+0

WCF 관련 태그가 제거되었습니다 – SteveC

답변

1

감사합니다 당신의 응답을 마크하지만 난 할 필요가 무엇인지 알아 냈어. 기본적으로 잘못된 큐 이름을 사용하고있었습니다. "FormatName : DIRECT = OS :"큐 이름 앞에 없었습니다. 일단 내가 그것을 놓는 것이 좋았다. 다시 한 번 감사드립니다.

로버트

+0

로버트, 이것이 답이라면 대답으로 받아 들여야한다. –

+0

죄송합니다. 죄송합니다. 알리미 주셔서 감사합니다. – Robert

2

은 - 당신이 사용하는 방법을 볼 수 .... 당신의 큐에이 링크의 일부를

확인 메시지를 전송하는 기본 System.Net.Messaging API를 사용하는 것 WCF는 MSMQ에 메시지를 보낼 :

마크

+0

wcf 서비스에서이 작업이 수행되고 있습니다 – Robert

+2

왜 wcf 서비스가 MSMQ에 메시지를 직접 드롭합니까? –

+1

WCF 서비스에서 보내지 않은 이유는 무엇입니까? ** WCF를 사용하여 ?? –

관련 문제