Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

...

  • Why are there no methods to create entities? Although one can use AMQP commands to accomplish this task it means you have to switch between two distinct command sets to manage the broker; it also means you cannot simply piggyback the QMF management over other transports. (further, for AMQP 1-0 we are removing "management" commands from the core protocol)

GS: See QPID-2317; I'd like using this to be as simple as sending a correctly formatted/encoded message to a special address. I believe with QMFv2 that will indeed be the pattern. It is a useful addition as the new APIs in c++ and python aim to be be protocol independent and thus do not expose the 0-10 declare methods.

  • There are no tools for inspecting the contents of messages within the broker. Where a message is stuck on the queue, it is useful to be able to inspect its properties and/or content.

GS: You could do this by browsing the queue (though there is no support then for moving or modifying a message). A scheme that avoids duplicating too much of the standard messaging behaviour would be good.

RG: the problem with that is that it requires you to be on an AMQP 0-10 connection.  I would like it to be that we can conduct QMF over other protocols, namely AMQP0-9 or JMX.  I understand your concern about duplicating functionality... as you already mentioned, moving can't be done easily anyway, but I see this inspection somewhat differently to browsing... and (in particular) without some form of server side selector I don't think the C++ broker could do what I am talking about (pick an arbitrary message from the queue and inspect it).

  • Values with High/Low watermarks... the historic low for these will almost invariably be 0, so what is the point?

...

Comments on Individual Schema Classes

System

Properties

General: what is this supposed to represent - the machine the broker is running on, or the process that is contains the broker?

Name

Type

Description

C++

Java

Notes

systemId

uuid

 

 

Y

Is this a qpid specific property?

osName

sstr

Operating System Name

 

Y

 

nodeName

sstr

Node Name

 

Y

What exactly is this supposed to be... hostname?

release

sstr

 

 

Y

What exactly is this supposed to be... release of the OS?

version

sstr

 

 

Y

What's the difference between this and release?

machine

sstr

 

 

Y

What is this?

...

  • ability to create virtual hosts
  • shutdown/restart broker?
  • reload (security) configuration.

Agent

The Java Broker does not currently support the Agent class

Properties

Name

Type

Description

C++

Java

Notes

connectionRef

objId

 

 

N

 

label

sstr

Label for agent

 

N

 

registeredTo

objId

Broker agent is registered to

 

N

 

systemId

uuid

Identifier of system where agent resides

 

N

 

brokerBank

uint32

Assigned object-id broker bank

 

N

 

agentBank

uint32

Assigned object-id agent bank

 

N

 

...

Name

Type

Description

C++

Java

Notes

msgTotalEnqueues

count64

Total messages enqueued

 

Y

 

msgTotalDequeues

count64

Total messages dequeued

 

Y

 

msgTxnEnqueues

count64

Transactional messages enqueued

 

 

 

msgTxnDequeues

count64

Transactional messages dequeued

 

 

 

msgPersistEnqueues

count64

Persistent messages enqueued

 

Y

 

msgPersistDequeues

count64

Persistent messages dequeued

 

Y

 

msgDepth

count32

Current size of queue in messages

 

Y

Is this with or without unacked messages (i.e. does it include all messages for which the dequeue has not yet been committed)?It includes unacked messages
Also would seem to make sense to provide high watermark for queue depth (bytes and msg)GS: +1 on high watermark for queue depth; would be very useful

byteDepth

count32

Current size of queue in bytes

 

Y

 

byteTotalEnqueues

count64

Total messages enqueued

 

Y

 

byteTotalDequeues

count64

Total messages dequeued

 

Y

 

byteTxnEnqueues

count64

Transactional messages enqueued

 

 

 

byteTxnDequeues

count64

Transactional messages dequeued

 

 

 

bytePersistEnqueues

count64

Persistent messages enqueued

 

Y

 

bytePersistDequeues

count64

Persistent messages dequeued

 

Y

 

consumerCount

hilo32

Current consumers on queue

 

Y

 

bindingCount

hilo32

Current bindings

 

Y

 

unackedMessages

hilo32

Messages consumed but not yet acked

 

 

It would seem more useful on a per subscription basis (so we can see which subscriptions are holding on to messages without acking them).GS: I agree

messageLatency

mmaTime

Broker latency through this queue

 

 

This generates a number of statistics (Max/Min/Avg/Samples) each of which is said to be measured in nanoseconds. What does Samples mean in this context?this isn't actually implemented on c++ yet

...

Signature

Description

C++

Java

Notes

void purge ( uint32 request)

Discard all or some messages on a queue

 

Y

Would be nice to add an arguments map so that filters could be supplied. Also making request an IO parameter so you can return how many messages were purged. Finally are the messages supposed to be purged from the head, the tail or randomly throughout the queue?

Suggested Additions:
  • mechanisms to move / copy messages to another queue (with filters to allow specifying arbitrary messages, not first X msg)
  • rename this queue
  • delete this queue
  • mechanism to inspect messages on the queue

...

Name

Type

Description

C++

Java

Notes

producerCount

hilo32

Current producers on exchange

N

N

How is this supposed to be calculated? RGem: This is not actually implemented on the C++ broker either

bindingCount

hilo32

Current bindings

 

Y

 

msgReceives

count64

Total messages received

 

Y

 

msgDrops

count64

Total messages dropped (no matching key)

 

Y

 

msgRoutes

count64

Total routed messages

 

Y

 

byteReceives

count64

Total bytes received

 

Y

 

byteDrops

count64

Total bytes dropped (no matching key)

 

Y

 

byteRoutes

count64

Total routed bytes

 

Y

 

...

Name

Type

Description

C++

Java

Notes

exchangeRef

objId

 

 

Y

 

queueRef

objId

 

 

Y

 

bindingKey

sstr

 

 

Y

 

arguments

map

 

 

Y

 

origin

sstr

 

 

Y

definition would be good... why is this not in "arguments" (since that is how it is set)?

Statistics

Name

Type

Description

C++

Java

Notes

msgMatched

count64

 

 

Y

 

...

Name

Type

Description

C++

Java

Notes

sessionRef

objId

 

 

Y

 

queueRef

objId

 

 

Y

 

name

sstr

 

 

Y

 

browsing

bool

 

 

Y

is this supposed to be a pre/non acquire indicator? Is this  true only when pre-acquiring and accept-mode is none?This is true of the acquire-mode was not-acquired (for 0-10). It is independent of the accept-mode which is exposed via the acknowledged property

acknowledged

bool

 

 

Y

is this simply accept-mode = explicit?yes

exclusive

bool

 

 

Y

 

creditMode

sstr

WINDOW or CREDIT

 

Y

 

arguments

map

 

 

Y

 

...

Name

Type

Description

C++

Java

Notes

vhostRef

objId

 

 

Y

 

address

sstr

 

 

Y

Is this the local or remote address?  Whichever, we should also have the other one. It is the remote address

incoming

bool

 

 

Y

 

SystemConnection

bool

Infrastucture/ Inter-system connection (Cluster, Federation, ...)

 

Y

 

federationLink

bool

Is this a federation link

 

Y

 

authIdentity

sstr

authId of connection if authentication enabled

 

Y

 

remoteProcessName

sstr

Name of executable running as remote client

 

 

These are a subset of the clientProperties sent by the client - should we not just show the client Props?

remotePid

uint32

Process ID of remote client

 

 

 

remoteParentPid

uint32

Parent Process ID of remote client

 

 

 

...

Name

Type

Description

C++

Java

Notes

closing

bool

This client is closing by management request

 

 

Why is this a statistic???

framesFromClient

count64

 

 

 

 

framesToClient

count64

 

 

 

 

bytesFromClient

count64

 

 

 

 

bytesToClient

count64

 

 

 

 

...

Name

Type

Description

C++

Java

Notes

vhostRef

objId

 

 

Y

 

host

sstr

 

 

Y

 

port

uint16

 

 

Y

 

transport

sstr

 

 

Y

What are the valid transports? at present, tcp, rdma and ssl(which is over tcp)

durable

bool

 

 

Y

 

...

Name

Type

Description

C++

Java

Notes

state

sstr

Operational state of the link

 

 

Are the valid states defined anywhere? c++ broker currently includes the following states: WAITING, CONNECTING, OPERATIONAL, FAILED, CLOSED, PASSIVE (from Link.h)

lastError

sstr

Reason link is not operational

 

 

 

...

Name

Type

Description

C++

Java

Notes

linkRef

objId

 

 

Y

 

channelId

uint16

 

 

Y

 

durable

bool

 

 

Y

 

src

sstr

 

 

Y

 

dest

sstr

 

 

Y

 

key

sstr

 

 

Y

 

srcIsQueue

bool

 

 

Y

 

srcIsLocal

bool

 

 

Y

 

tag

sstr

 

 

 

what is this and what does it do? It is used for loop detection and is the value to be used for qpid.trace.id on the subscription queue

excludes

sstr

 

 


what is this and what does it do? Also used for loop detection and is the value to be used for qpid.trace.excludes on the subscription queue

dynamic

bool

 

 

Y

 

sync

uint16

 

 

 

 

...

Name

Type

Description

C++

Java

Notes

framesOutstanding

count32

 

 

 

 

TxnStarts

count64

Total transactions started

 

 

Are these supposed to be tx or dtx transactions? or either

TxnCommits

count64

Total transactions committed

 

 

 

TxnRejects

count64

Total transactions rejected

 

 

 

TxnCount

count32

Current pending transactions

 

 

 

clientCredit

count32

Client message credit

 

 

 

...