@Test public void testSlowSubscriberByBytes() throws Exception { try (NatsTestServer ts = new NatsTestServer(false); NatsConnection nc = (NatsConnection) Nats.connect(ts.getURI())) { Subscription sub = nc.subscribe("subject"); sub.setPendingLimits(-1, 10); // will take the first, not the second assertEquals(10, sub.getPendingByteLimit()); assertEquals(-1, sub.getPendingMessageLimit()); assertEquals(0, sub.getDroppedCount()); nc.publish("subject", null); nc.publish("subject", null); nc.flush(Duration.ofMillis(5000)); assertEquals(1, sub.getDroppedCount()); assertEquals(1, sub.getPendingMessageCount()); assertEquals(19, sub.getPendingByteCount()); // "msg 1 subject 0" + crlf + crlf sub.clearDroppedCount(); nc.publish("subject", null); nc.flush(Duration.ofMillis(5000)); assertEquals(1, sub.getDroppedCount()); assertEquals(1, sub.getPendingMessageCount()); } }
@Test public void testSlowSubscriberByMessages() throws Exception { try (NatsTestServer ts = new NatsTestServer(false); NatsConnection nc = (NatsConnection) Nats.connect(ts.getURI())) { Subscription sub = nc.subscribe("subject"); sub.setPendingLimits(1, -1); assertEquals(1, sub.getPendingMessageLimit()); assertEquals(-1, sub.getPendingByteLimit()); assertEquals(0, sub.getDroppedCount()); nc.publish("subject", null); nc.publish("subject", null); nc.publish("subject", null); nc.publish("subject", null); nc.flush(Duration.ofMillis(5000)); assertEquals(3, sub.getDroppedCount()); assertEquals(1, sub.getPendingMessageCount()); assertEquals(19, sub.getPendingByteCount()); // "msg 1 subject 0" + crlf + crlf sub.clearDroppedCount(); nc.publish("subject", null); nc.flush(Duration.ofMillis(5000)); assertEquals(1, sub.getDroppedCount()); assertEquals(1, sub.getPendingMessageCount()); } }