AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Blogs
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.05.2008, 01:25   #1  
Blog bot is offline
Blog bot
Участник
 
25,475 / 846 (79) +++++++
Регистрация: 28.10.2006
So my day job has been keeping me very busy (which is never a bad thing)...


I have managed to delve a little deeper into message queues, and although documentation exists, it can be a little ambiguous. Here is what I have found...


NAV and Message Queues

WritePrivateQueue()
CREATE(CC2);


CREATE(MQBus);


CC2.AddBusAdapter(MQBus,1);


MQBus.OpenWriteQueue('.private$TestWriteQueue',0,0);


MQBus.SenderAuthenticationLevel:= 2;


OutMsg := CC2.CreateoutMessage('Message queue://.private$TestWriteQueue');


OutS := OutMsg.GetStream();


OutS.WRITE('Hello world! - WritePrivateQueue');


OutMsg.Send(0);


Variables





Name
DataType
Subtype

MQBus
Automation
'Navision MS-Message Queue Bus Adapter'.MSMQBusAdapter

CC2
Automation
'Navision Communication Component version 2'.CommunicationComponent

OutMsg
Automation
'Navision Communication Component version 2'.OutMessage

OutS
OutStream

The code above will write to a new private message queue on the local machine called: TestWriteQueue


The message is called: Navision MSMQ-BA


At the same time a message called: Navision MSMQ-BA is created in the public queue called: nsadminreceivequeue - not too sure what this one does or is as it is blank – it seems to be the admin queue used to deliver the message to the correct queue as it states – “The message reached the queue.”





Receiving & Displaying MessagesOnRun()
CREATE(MQBus);


CREATE(CC2);


CC2.AddBusAdapter(MQBus,1);


MQBus.OpenReceiveQueue('.private$TestWriteQueue',0,0);

CC2::MessageReceived(VAR InMessage : Automation "''.IDISPATCH")
InMsg := InMessage;


InS := InMsg.GetStream();


InS.READ(Txt);


MESSAGE(Txt);


InMsg.CommitMessage();





Name
DataType
Subtype
Length

MQBus
Automation
'Navision MS-Message Queue Bus Adapter'.MSMQBusAdapter


CC2
Automation
'Navision Communication Component version 2'.CommunicationComponent
WITHEVENTS

InMsg
Automation
'Navision Communication Component version 2'.InMessage


InS
InStream



Txt
Text

100
This code will receive the message sent by WritePrivateQueue and then display the text in message in NAV. This codeunit must be running single instance so that it can respond to the event.





WritePrivateQueueandReply()
CREATE(CC2);


CREATE(MQBus);


CC2.AddBusAdapter(MQBus,1);


MQBus.OpenWriteQueue('.private$TestWriteQueue',0,0);


MQBus.OpenReplyQueue('.private$TestReadQueue',0,0);


MQBus.SenderAuthenticationLevel:= 3;


OutMsg := CC2.CreateoutMessage('Message queue://.private$TestWriteQueue');


OutS:= OutMsg.GetStream();


OutS.WRITE('Hello world! - WritePrivateQueueandReply');


InMsg:= OutMsg.SendWaitForReply(3000);


IF ISCLEAR(InMsg) THEN


MESSAGE('InMsg not received')


ELSE


BEGIN


InS:= InMsg.GetStream();


InS.READ(Txt);


MESSAGE(Txt);


END;


Variables





Name
DataType
Subtype
Length

MQBus
Automation
'Navision MS-Message Queue Bus Adapter'.MSMQBusAdapter


CC2
Automation
'Navision Communication Component version 2'.CommunicationComponent


OutMsg
Automation
'Navision Communication Component version 2'.OutMessage


OutS
OutStream



InMsg
Automation
'Navision Communication Component version 2'.InMessage


InS
InStream



Txt
Text

100
The code above will write to a new private message queue on the local machine called: TestWriteQueue


The message is called: Navision MSMQ-BA


At the same time a message called: Navision MSMQ-BA is created in the public queue called: nsadminreceivequeue - not too sure what this one does or is as it is blank – it seems to be the admin queue used to deliver the message to the correct queue as it states – “The message reached the queue.”


This time we wait for a response back after sending the machine.


The system is not receiving the reply!!!






<h4 style="MARGIN:auto 0cm;">Public/Private Queues</h4>
A public queue is a queue that is registered in the directory service that any Message Queuing application can locate. Public queues are persistent. You can make a backup of their registration information, which makes them suitable for long-term use.


A private queue is a queue that is registered on the local computer (not in the directory service) that other applications typically cannot locate. Private queues have the advantage of having no directory service overhead. This means that they are faster to create, there is no latency and no replication. Further, they can be created and deleted when the directory service is not working.






Подробнее... http://dynamicsuser.net/blogs/nav2dotnet/a...age-queues.aspx
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:13.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.