Basically ZEROMQ (Java) in the basic code is a once again, but think it in the log this piece seemingly basically did not do what work, that is, we log to know what happened to Zeromq.
And because of the ZEROMQ connection in the establishment and reconnection are isolated, the user does not need to do anything to maintain the connection, of course, the benefits of this is to make the programmer's coding less, but of course there is a downside, that is, the user has lost control of the entire ZEROMQ operation phase.
For example, when we take the initiative to connect to a remote address, or if the connection is interrupted, no logs tell us that these things have happened ... At the time, these logs, or the monitoring of events, were critical to a message communication system.
Of course, there is no log to record these things, does not mean that we do not know what is happening in the current operation, ZEROMQ in the use of another way to monitor the situation of the socket, but this method is more disgusting, need to create additional sockets to monitor their interests of the socket ...
Let's not talk about the gossip here, let's see what listening events are defined in ZEROMQ:
[Java]View Plaincopy
public static final int event_connected = ZMQ. ZMQ. zmq_event_connected; Events after a successful connection establishment
public static final int event_delayed = ZMQ. ZMQ. zmq_event_connect_delayed; Connection delay
public static final int event_retried = ZMQ. ZMQ. zmq_event_connect_retried; Try connecting again
public static final int event_connect_failed = ZMQ. ZMQ. zmq_event_connect_failed; Connection failed
public static final int event_listening = ZMQ. ZMQ. zmq_event_listening; Set up a monitoring
public static final int event_bind_failed = ZMQ. ZMQ. zmq_event_bind_failed; Bind failed
public static final int event_accepted = ZMQ. ZMQ. zmq_event_accepted; Receive the Accept Event
public static final int event_accept_failed = ZMQ. ZMQ. zmq_event_accept_failed; Accept events with errors
public static final int event_closed = ZMQ. ZMQ. zmq_event_closed; Close Event
public static final int event_close_failed = ZMQ. ZMQ. zmq_event_close_failed; Shutdown failed
public static final int event_disconnected = ZMQ. ZMQ. zmq_event_disconnected; Connection Disconnect
public static final int event_all = ZMQ. ZMQ. Zmq_event_all; All the events
Above is the definition of all possible events, each of which the meaning of the following comments are explained, of course, I think the most important events are connected to disconnect, the establishment of connections, as well as reconnection and other events ...
Now let's look at how to monitor these events in Zeromq (Java), directly on the code:
[Java]View Plaincopy
public static final int event_connected = ZMQ. ZMQ. zmq_event_connected; Events after a successful connection establishment
public static final int event_delayed = ZMQ. ZMQ. zmq_event_connect_delayed; Connection delay
public static final int event_retried = ZMQ. ZMQ. zmq_event_connect_retried; Try connecting again
public static final int event_connect_failed = ZMQ. ZMQ. zmq_event_connect_failed; Connection failed
public static final int event_listening = ZMQ. ZMQ. zmq_event_listening; Set up a monitoring
public static final int event_bind_failed = ZMQ. ZMQ. zmq_event_bind_failed; Bind failed
public static final int event_accepted = ZMQ. ZMQ. zmq_event_accepted; Receive the Accept Event
public static final int event_accept_failed = ZMQ. ZMQ. zmq_event_accept_failed; Accept events with errors
public static final int event_closed = ZMQ. ZMQ. zmq_event_closed; Close Event
public static final int event_close_failed = ZMQ. ZMQ. zmq_event_close_failed; Shutdown failed
public static final int event_disconnected = ZMQ. ZMQ. zmq_event_disconnected; Connection Disconnect
public static final int event_all = ZMQ. ZMQ. Zmq_event_all; All the events
Here the code with Req/rep for example, in fact, it is relatively simple to use, when the connection is established, will be output:
1 tcp://127.0.0.1:5000
1 is the event that is established on behalf of the connection, followed by the address that establishes the connection,
If you close response at this time, the output will be as follows:
tcp://127.0.0.1:5000
512 is the event that the connection is disconnected ...
Well, as for the monitoring of the source code is how to achieve, here is not elaborate, in fact, is very simple, if you are interested to see for yourself.
To this ZEROMQ (Java) code is to be read almost, is an over, then take a good look at the book ... In addition, you want to engage in the C + + aspect of things ... Preliminary plan to see the source of Redis ....
Monitoring sockets in ZeroMQ (Java)