服务大厅门户与投标书的统一消息集成实现
// ServicePortalController.java
@RestController
public class ServicePortalController {
@Autowired

private RabbitTemplate rabbitTemplate;
@PostMapping("/submit-application")
public ResponseEntity
// 发送消息到消息队列
rabbitTemplate.convertAndSend("application-topic", "new-application", application);
return ResponseEntity.ok("申请已提交");
}
}
// BidDocumentConsumer.java
@Component
public class BidDocumentConsumer {
@RabbitListener(queues = "bid-document-queue")
public void handleNewApplication(ApplicationDTO application) {
// 根据申请信息生成投标书
BidDocument document = generateBidDocument(application);
saveBidDocument(document);
System.out.println("投标书已生成:" + document.getId());
}
private BidDocument generateBidDocument(ApplicationDTO application) {
// 实际生成逻辑
return new BidDocument();
}
private void saveBidDocument(BidDocument document) {
// 保存到数据库
}
}
// 修改消息发送部分
Map
headers.put("type", "government");
Message message = MessageBuilder.withBody(application.toString().getBytes())
.setHeaders(headers)
.build();
rabbitTemplate.send("application-topic", message);
// 消费者处理
@RabbitListener(queues = "bid-document-queue")
public void handleNewApplication(Message message) {
String type = (String) message.getHeaders().get("type");
ApplicationDTO application = (ApplicationDTO) message.getPayload();
if ("government".equals(type)) {
// 处理政府项目投标书
} else if ("enterprise".equals(type)) {
// 处理企业项目投标书
}
}
本站知识库部分内容及素材来源于互联网,如有侵权,联系必删!

