Explane the stratetic decision behind the software.
libmqmsgque helps you to split your code from one single process into multiple processes.
To solve the problem libmqmsgque is using sockets to link the different parts of your application into a single application. "sockets" have the advantage that they are independent of the operations-system and independent of the programming language used. For libmqmsgque every single task is using it's own process (argument --fork
or --spawn
) or thread (argument --thread
) and libmqmsgque is responsible to make this happen.
libmqmsgque was designed to support guaranteed delivery. This mean that the data you put into a libmqmsgque package is exactly the same data the remote site read from the package. If this can not be guaranteed an error is reported to the sender. The data-types supported for guaranteed delivery are available at MkTypeE.
libmqmsgque was designed to support network wide transaction. This mean that a transaction started with MqSendEND_AND_WAIT or MqSendEND_AND_CALLBACK is designed to finish successfully or to report an error even if the error-source is not local.
libmqmsgque was designed to control the whole grid of network nodes. This mean that the client get all errors reported local or remote. Remote include not only the direct neighbour it include all network nodes of the grid.
Start a server listen to port MyPort on your alias interface MyHost and --fork
(--thread
or --spawn
is also possible) for every incoming connection a new server.
server --tcp --fork --host MyHost --port MyPort
Start a server listen to port MyPort on your alias interface MyHost and exit after the first connection.
server --tcp --host MyHost --port MyPort
If stdin/stdout is required to connect to the server (example: (x)inetd or UNIX pipe) use --init as command-line-argument.
server --init ... some-unix-command | server --init
Start a server listen to file LocalFile and fork for every incoming connection a new server.
server --uds --fork --file LocalFile
Start a server listen to file LocalFile and exit after the first connection.
server --uds --file LocalFile
Use a client to connect to RemoteHost using RemotePort
client --tcp --host RemoteHost --port RemotePort
Use the setup from above but use my local Interface LocalHost
client --tcp --host RemoteHost --myhost LocalHost --port RemotePort
Use a client to connect to a local server listen to file LocalFile
client --uds --file LocalFile
Use a client start the server using pipe communication
client @ server
Setup a command-pipeline using multiple filter
client @ filter1 @ filter2 @ ... @ server
Setup a command-pipeline using a filter with multiple entry-points
client @ filter main1 @ filter main2 @ ... @ server