feat(mq-starter-core): 发送门面 MqTemplate + DefaultMqTemplate

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-26 04:48:19 +08:00
parent 491b83de94
commit 871aef64f8
3 changed files with 53 additions and 0 deletions

View File

@@ -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);
}
}

View File

@@ -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);
}

View File

@@ -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());
}
}