(1) where is the actual queue held physically?
(2) my stored proc that the queue uses issues an END CONVERSATION, does the
BEGIN DIALOG also require one? I read that we need 2 END CONVERSATIONS for
it to work correctly
(3) Is the service equivalent to an endpoint, or is that more the queue?
(4) Is there a posibility of having a message type of just (varchar) text?
TIA.
Kent Tegels - 08 May 2006 13:55 GMT
Hello joe,
j> (1) where is the actual queue held physically?
In the data space like table. select sq.name,it.name from sys.service_queues
sq join sys.internal_tables it on sq.object_id = it.parent_object_id; will
give you an idea about how that works.
j> (2) my stored proc that the queue uses issues an END CONVERSATION,
j> does the
j> BEGIN DIALOG also require one? I read that we need 2 END
j> CONVERSATIONS for
j> it to work correctly
No, not extactly. Both the initiating and the target service need to end
coversation to flush related messages from the queue IIUC.
j> (3) Is the service equivalent to an endpoint, or is that more the
j> queue?
A service is essentially a strongly-typed level of indirection for a queue.
Endpoints essentially represent nodes on network and what services are available
on them.
j> (4) Is there a posibility of having a message type of just (varchar)
j> text?
Well on one level, a validation type of none allows just that. But because
that message could exceed the packet size that service broker uses when sending
messages over the network, it always goes as varbinary(max).
Thanks!
Kent Tegels
DevelopMentor
http://staff.develop.com/ktegels/
Roger Wolter[MSFT] - 08 May 2006 15:33 GMT
1) Queues are just hidden tables so they are stored in a tablespace just
like tables. You can specify a table space in the CREATE QUEUE command and
if you don't, the queue is stored in the default tablespace.
2) Both endpoints of a conversation have to issue an END CONVERSATION
before its really ended. Generally, the first endpoint that knows it is
completely done with the conversation will execute an END CONVERSATION
command. This will cause the other endpoint to receive a
http://schemas.microsoft.com/SQL/ServiceBroker/EndDialog message which
indicates it's OK to execute an END CONVERSATION at its end.
3) A Service is more closely associated with a Queue than a Conversation
Endpoint although it is related to both. You can thin of a Service as
defining a set of conversations targeted at a queue and the logic to process
the messages sent to the service. Endpoint has two meanings. A
CONVERSATION ENDPOINT is associated with a particular instance of a service.
A Service Broker endpoint is used to configure a transport connection to
receive connections from other service brokers.
4) A message can be any SQL type that can be CAST to varbinary(MAX) so
varchar() is legal as a message as is any SQL Type except variant I believe.

Signature
This posting is provided "AS IS" with no warranties, and confers no rights.
Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm
> (1) where is the actual queue held physically?
> (2) my stored proc that the queue uses issues an END CONVERSATION, does
[quoted text clipped - 4 lines]
>
> TIA.