2013-08-31 2 views
0

하늘색 서비스 버스에서 amqp를 사용하여 .NET 클라이언트에서 Java 클라이언트로 간단한 문자열 메시지를 보내려고합니다..NET에서 Azure ServiceBus를 통해 javax.jms.TextMessage를 보내려면 어떻게해야합니까?

message = new BrokeredMessage("this is a text string"); 

을하고 그것이 끝난 TextMessage (javax.jms.TextMessage)로 Java 클라이언트에 표시가 다음 documentation에 따르면 나는이 같은 중개 메시지를 보낼 수 있어야합니다. 그러나 내가 TextMessage로 Java에서 메시지를 캐스팅 할 때 jms.impl.BytesMessageImpl을 TextMessage로 변환 할 수 없다는 예외가 발생합니다. 누구든지 메시지가 TextMessage가 아닌 BytesMessage와 같은 이유를 알고 있습니까? docs BytesMessage의에 따르면

은 다음과 같이 구축 될 것입니다 :

byte[] bytes = { 33, 12, 45, 33, 12, 45, 33, 12, 45, 33, 12, 45 }; 
message = new BrokeredMessage(bytes); 

내가 뭘하고 있지 않다 ....

누구나이 같은 작업을 수행하는 방법을 알아?

[업데이트] 흥미롭게도, 내가 함께 내 연결 문자열의 transportType = AMQP 지정하지 않고 내 보내는 코드를 테스트했다. 매번 MessagingFactory 설정이 매번 올바른 전송 유형으로 설정된다는 것을 코드가 실행되는 동안 확인했습니다. 메시지를 사용한 전송 유형에 관계없이 Java 응용 프로그램에 BytesMessage로 도착합니다. 메시지의 바이트 보면 상관없이 메시지가 전송되는 동일한 결과를 알 수 없습니다 :

@ string 3http://schemas.microsoft.com/2003/10/Serialization/�&BLABLA this is a message 

는 [UPDATE2] 나는 내 문제의 근본 원인을 파악. 내 설치 프로그램에서 큐에 메시지를 전달하는 구독자가 있습니다. 이것이 메시지가 엉망이되는 곳입니다. 대기열에 AMQP 메시지를 직접 보내면 자바 애플리케이션에 TextMessage로 전송됩니다. AMQP를 통해 주제에 메시지를 보내면 구독자 (필터 포함)를 통해 내 대기열로 전달되고 BytesMessage로 변환됩니다.

그럼 제대로 작동하려면 어떻게해야합니까? 이 작동하도록 대기열로 전달되는 구독자를 설치하는 방법이 있습니까?

답변

1

현재 전달 규칙을 사용할 때 서비스 버스 AMQP 상호 운용성에 대한 제한 사항이 있습니다. 전달하는 동안 데이터 계약 serializer를 사용하여 메시지가 잘못 re-serialize됩니다. 우리는 그 문제를 해결할 것이고 그 일이 끝나면 여기서 다시보고 할 것입니다. 그 동안 가능한 해결 방법은 메시지 속성을 사용하여 본문이 아닌 응용 프로그램 데이터를 저장하는 것입니다. 즉, 본문을 사용하는 대신 중요한 정보를 저장하는 메시지의 문자열 속성을 사용합니다.


안부 인사 :
데이브.
서비스 버스 팀

+0

이것에 대한 뉴스? –

1

작성한 코드가 올바르게 표시됩니다. 내가 생각할 수있는 유일한 것은 .NET SDK의 이전 버전을 가지고 있는데, AMQP 지원이 추가되기 전에 발급 된 것입니다. http://www.nuget.org/packages/WindowsAzure.ServiceBus/에서 최신 서비스 버스 SDK를 사용하여 코드를 시험해볼 수 있습니까?

감사합니다.
데이브.
(서비스 버스 팀)

+0

안녕 Dave, 입력 해 주셔서 감사합니다. ServiceBus SDK의 최신 버전을 사용하므로 문제가되지 않습니다.나는 원래의 질문에 왜 이것이 일어나고 있다고 생각하는지에 대한 몇 가지 추가 정보를 추가했다. – Jez

+0

그게 버그 같아. 그걸 확인하고 다시 보자. –

+0

많은 David에게 감사 드리며, 고객을 위해 개인 대기열에 메시지를 복제 할 수있는 큰 이점이 있습니다. - 고마워요 – Jez