feat(mq-starter-core): 发送门面 MqTemplate + DefaultMqTemplate
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,15 @@
|
|||||||
|
package com.njcn.mq.core;
|
||||||
|
import cn.hutool.core.util.IdUtil;
|
||||||
|
import com.njcn.mq.spi.MqDriver;
|
||||||
|
|
||||||
|
public class DefaultMqTemplate implements MqTemplate {
|
||||||
|
private final MqDriver driver;
|
||||||
|
public DefaultMqTemplate(MqDriver driver) { this.driver = driver; }
|
||||||
|
|
||||||
|
@Override public void send(String topic, Object payload) { send(topic, "", payload); }
|
||||||
|
|
||||||
|
@Override public void send(String topic, String routingKey, Object payload) {
|
||||||
|
MqMessage msg = MqMessage.of(IdUtil.getSnowflake().nextIdStr(), routingKey, payload);
|
||||||
|
driver.send(topic, msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package com.njcn.mq.core;
|
||||||
|
|
||||||
|
public interface MqTemplate {
|
||||||
|
void send(String topic, Object payload);
|
||||||
|
void send(String topic, String routingKey, Object payload);
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package com.njcn.mq.core;
|
||||||
|
import com.njcn.mq.spi.MqDriver;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.mockito.ArgumentCaptor;
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
class DefaultMqTemplateTest {
|
||||||
|
@Test
|
||||||
|
void send_withRoutingKey_buildsEnvelopeAndDelegates() {
|
||||||
|
MqDriver driver = mock(MqDriver.class);
|
||||||
|
MqTemplate t = new DefaultMqTemplate(driver);
|
||||||
|
t.send("File_Topic", "node-7", "payload-json");
|
||||||
|
|
||||||
|
ArgumentCaptor<MqMessage> cap = ArgumentCaptor.forClass(MqMessage.class);
|
||||||
|
verify(driver).send(eq("File_Topic"), cap.capture());
|
||||||
|
MqMessage m = cap.getValue();
|
||||||
|
assertEquals("node-7", m.getTag());
|
||||||
|
assertEquals("payload-json", m.getPayload());
|
||||||
|
assertNotNull(m.getKey());
|
||||||
|
assertTrue(m.getTimestamp() > 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void send_withoutRoutingKey_tagIsEmpty() {
|
||||||
|
MqDriver driver = mock(MqDriver.class);
|
||||||
|
new DefaultMqTemplate(driver).send("LN_Topic", "p");
|
||||||
|
ArgumentCaptor<MqMessage> cap = ArgumentCaptor.forClass(MqMessage.class);
|
||||||
|
verify(driver).send(eq("LN_Topic"), cap.capture());
|
||||||
|
assertEquals("", cap.getValue().getTag());
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user