使用用于web套接字消息传递的Stomp broker中继,我可以订阅目标/topic/mydest
。这将创建一个代理订阅,并接收系统中的某些内容为此代理目标触发的所有消息,这将在系统中发生某些事件时发生。
我可以订阅一个目标/app/mydest
,将调用带有@subscribebemapping(“mydest”)
的控制器方法,并且返回值仅在该套接字上作为消息发送回。据我所知,这是唯一的消息,将永远发送此订阅。
有没有一种方法可以将其合并到一个订阅中,即为某个/topic
目的地创建一个代理订阅,并触发一些直接将消息发送回订阅方的代码?
用例:当系统中发生错误时,将带有当前错误计数的消息发送到/topic/mydest
。当一个新客户订阅时,我只想向他发送最后一次已知的错误计数。其他人此时不感兴趣,因为人数没有变化。
我目前的解决方案是同时订阅/app/my的
和/topic/my的
,并在客户端上使用相同的消息处理程序。但它确实是一个合乎逻辑的订阅,而且它有点容易出错,因为客户端需要记住订阅两者。
我在这种情况下的问题:是否会有/app/
订阅的进一步消息?有什么可以触发的吗?除此之外,如何向订阅者发送主题的初始信息,而不向现有订阅者发送冗余消息?
按照要求,这是我的WebSocket配置类。
@Configuration
@EnableWebSocketMessageBroker
public class WebsocketConfiguration extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws").setAllowedOrigins("*").withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableStompBrokerRelay("/queue/", "/topic/", "/exchange/");
registry.setApplicationDestinationPrefixes("/app");
}
}
您可以侦听会话订阅事件并发送初始消息
@Component
@RequiredArgsConstructor
public class WebSocketEventListener {
private static final Logger logger = LoggerFactory.getLogger(WebSocketEventListener.class);
private final SimpMessagingTemplate simpMessagingTemplate;
@EventListener
public void handleSessionSubscribeEvent(SessionSubscribeEvent event) {
logger.info("Subscribed to session: " + event);
Principal user = event.getUser();
if (user instanceof UsernamePasswordAuthenticationToken) {
UsernamePasswordAuthenticationToken token = (UsernamePasswordAuthenticationToken) user;
if (token.getPrincipal() instanceof UserDetails) {
UserDetails userDetails = (UserDetails) token.getPrincipal();
simpMessagingTemplate.convertAndSendToUser(userDetails.getUsername(), "/queue/notify", "Hello");
}
}
}
}
可以使用Application ationListener和SessionSubcribe事件。示例:
@Component
public class SubscribeListener implements ApplicationListener<SessionSubscribeEvent> {
private final SimpMessagingTemplate messagingTemplate;
@Autowired
public SubscribeListener(SimpMessagingTemplate messagingTemplate) {
this.messagingTemplate = messagingTemplate;
}
@Override
public void onApplicationEvent(SessionSubscribeEvent event) {
messagingTemplate.convertAndSendToUser(event.getUser().getName(), "/topic/mydest", "Last known error count");
}
}
找到要发消息的订阅号-“群发消息”-新建群发消息 1)根据内容选择发送图文消息、文字消息、图片消息和文件消息。 2)选择群发范围,全部用户或部分用户,选择部分用户时支持选择组织机构或成员。 3)支持从素材库中选择,或直接新建图文消息。以“新建图文消息”为例: 备注:“保存”只是保存在“素材管理”里,没有发送出去,如果既要保存又要发送,请点击“保存并发送”。 4)除了图文、图片、文字消息,订阅号还可
微信文档:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.addTemplate.html 组合模板并添加至帐号下的个人模板库 $tid = 563; // 模板标题 id,可通过接口获取,也可登录小程序后台查看获取 $kidLi
开普勒消息目前分为三大类:公告,告警和通知。 通知中根据不同的操作事件类型,分为十几个事件。每个事件都跟项目操作相关。便于接收项目操作变更的通知。 分类 事件 公告 Alarm 告警 Proclaim 通知 Build,Apply,Audit,Delete,Rollback,Logging,Reboot,Command,Storage,Extend... 订阅界面: 用户中心,点击头像,下拉菜单→
我正在尝试创建一个仅在共享内存中具有文件的小文件服务器。客户端应该向服务器发送命令,如 CREATE、DELETE 等。但是,我还没有到那个阶段。 我已经准备了一个服务器和一个客户端。服务器接受套接字,并为每个客户端连接创建一个新线程(要求)。 当我启动客户端时,我可以成功连接到服务器并发送将被接收的消息。但是,这只能工作一次。发送我的命令后,服务器将不会收到任何其他命令。 我尝试使用换行符捕获消
我是新的数据流和发布子工具在GCP。 需要将prem过程中的电流迁移到GCP。 当前流程如下: 我们有两种类型的数据馈送 Full Feed–其adhoc作业–完整XML的大小约为100GB(单个XML–非常复杂的一个–完整的数据–ETL作业处理此XML并将其加载到约60个表中) 单独的ETL作业用于处理完整提要。ETL作业过程完全馈送并创建负载就绪文件,所有表将被截断并重新加载 源系统每30分钟
一个人气正在上升的确保安全并发的方式是 消息传递(message passing),这里线程或 actor 通过发送包含数据的消息来相互沟通。这个思想来源于 Go 编程语言文档中的口号: Do not communicate by sharing memory; instead, share memory by communicating. 不要共享内存来通讯;而是要通讯来共享内存。 —Effec