@SuppressWarnings("unused") private void handleMessage( @DestinationVariable String foo, @DestinationVariable(value = "name") String param1, String param3) {
@MessageMapping("/message/{foo}/{name}") public void messageMappingDestinationVariable(@DestinationVariable("foo") String param1, @DestinationVariable("name") String param2) { this.method = "messageMappingDestinationVariable"; this.arguments.put("foo", param1); this.arguments.put("name", param2);
@SubscribeMapping("/sub/{foo}/{name}") public void subscribeEventDestinationVariable(@DestinationVariable("foo") String param1, @DestinationVariable("name") String param2) { this.method = "subscribeEventDestinationVariable"; this.arguments.put("foo", param1); this.arguments.put("name", param2);
@MessageMapping("/binding/id/{id}") public void simpleBinding(@DestinationVariable("id") Long id) { this.method = "simpleBinding"; this.arguments.put("id", id);
ChatMessageDTO chatMessage(@DestinationVariable String channelId, ChatMessageDTO message) throws BeansException, UserNotFoundException;
String notifications(@DestinationVariable long userId, String message);
@MessageMapping("/tennis/bet/{clientId}/{matchId}") public void bet(String winner, @DestinationVariable("clientId") String clientId, @DestinationVariable("matchId") String matchId) { Map<String, String> clientBets = matchClientBets.get(matchId); clientBets.put(clientId, winner); System.out.println(clientId); System.out.println(winner); System.out.println(matchId);
@SendTo("/topic/user.notification.{userId}") public String notifications(@DestinationVariable long userId, String message) { return message;
@SubscribeMapping("/bank-accounts/{bankAccountId}/bank-transfers") public Iterable<BankTransferEntry> bankTransfers(@DestinationVariable String bankAccountId) { log.info("Retrieve bank transfers for bank account with id {}", bankAccountId); return bankTransferRepository.findBySourceBankAccountIdOrDestinationBankAccountId(bankAccountId, bankAccountId);
@MessageMapping("/bank-transfers/{id}") public BankTransferEntry get(@DestinationVariable String id) { log.info("Retrieve bank transfer with id {}", id); return bankTransferRepository.findOne(id);
@SubscribeMapping("/{id}") public BankAccountEntry get(@DestinationVariable String id) { return bankAccountRepository.findOne(id);
/** * Workspace 화면 진입시 호출 * @param accessor * @param workbenchId * @throws Exception @MessageMapping("/datasources/{temporaryId}/progress") public void viewWorkbenchPage(SimpMessageHeaderAccessor accessor, @DestinationVariable String workbenchId) throws Exception { LOGGER.debug("Init workbench view : Workbench - {}, user - {}, session id - {}", workbenchId, accessor.getUser().getName(), accessor.getSessionId()); // TODO : Create DataSource Connection per workbench view
/**
* Workspace 화면 진입시 호출 되며, 메시지를 받는 즉시 특정 workspace 의 lastAccessTime 을 업데이트 합니다
* @param accessor
* @param workspaceId
* @throws Exception
@MessageMapping("/workspaces/{workspaceId}/accessed")
public void accessWorkspace(SimpMessageHeaderAccessor accessor,
@DestinationVariable String workspaceId) throws Exception {
LOGGER.debug("Workspace accessed : WorkspaceId - {}, user - {}, session id - {}",
workspaceId, accessor.getUser().getName(), accessor.getSessionId());
workspaceService.updateLastAccessedTime(workspaceId);
@MessageMapping("/private.chat.{channelId}") @SendTo("/topic/private.chat.{channelId}") public ChatMessageDTO chatMessage(@DestinationVariable String channelId, ChatMessageDTO message) throws BeansException, UserNotFoundException { chatService.submitMessage(message); return message;
/**
* Workspace 화면 나갈때 호출
* @param accessor
* @param workbenchId
* @throws Exception
@MessageMapping("/workbench/{workbenchId}/dataconnections/{dataConnectionId}/disconnect")
public void disconnectWorkbench(SimpMessageHeaderAccessor accessor,
@DestinationVariable String workbenchId) throws Exception {
LOGGER.debug("Disconnect workbench : Workbench - {}, user - {}, session id - {}",
workbenchId, accessor.getUser().getName(), accessor.getSessionId());
String sessionId = accessor.getSessionId();
WorkbenchDataSourceUtils.destroyDataSource(sessionId);
Map<String, Object> message = new HashMap<>();
message.put("command", WorkbenchWebSocketCommand.DISCONNECT);
message.put("disconnected", true);
WebSocketUtils.sendMessage(messagingTemplate, sessionId, "/queue/workbench/" + workbenchId, message);
/**
* Workspace 화면 진입시 호출
* @param accessor
* @param workbenchId
* @throws Exception
@MessageMapping("/workbench/{workbenchId}/dataconnections/{dataConnectionId}/connect")
public void connectWorkbench(SimpMessageHeaderAccessor accessor,
@DestinationVariable String workbenchId,
@DestinationVariable String dataConnectionId,
UserInfo userInfo) throws Exception {
LOGGER.debug("Connect workbench : Workbench - {}, DataConnection - {}, user - {}, session id - {}",
workbenchId, dataConnectionId, accessor.getUser().getName(), accessor.getSessionId());
String sessionId = accessor.getSessionId();
String username = userInfo != null ? userInfo.getUsername() : "";
String password = userInfo != null ? userInfo.getPassword() : "";
Map<String, Object> message = new HashMap<>();
message.put("command", WorkbenchWebSocketCommand.CONNECT);
message.put("connected", true);
try{
workbenchService.createSingleDataSource(dataConnectionId, sessionId, username, password);
} catch (MetatronException e){
message.put("connected", false);
message.put("message", e.getMessage());
WebSocketUtils.sendMessage(messagingTemplate, sessionId, "/queue/workbench/" + workbenchId, message);
/**
* Serves web socket requests, requesting to resume a consumer.
@MessageMapping("/resume/{viewId}")
@Transactional
public String resumeConsumer(
@DestinationVariable final Long viewId,
final SimpMessageHeaderAccessor headerAccessor) {
// Request Resume
final long userId = getLoggedInUserId(headerAccessor);
final String sessionId = headerAccessor.getSessionId();
webSocketConsumersManager.resumeConsumer(viewId, SessionIdentifier.newStreamIdentifier(userId, sessionId));
return "{success: true}";
/**
* Serves web socket requests, requesting to pause a consumer.
@MessageMapping("/pause/{viewId}")
@Transactional
public String pauseConsumer(
@DestinationVariable final Long viewId,
final SimpMessageHeaderAccessor headerAccessor) {
// Request a pause
final long userId = getLoggedInUserId(headerAccessor);
final String sessionId = headerAccessor.getSessionId();
webSocketConsumersManager.pauseConsumer(viewId, SessionIdentifier.newStreamIdentifier(userId, sessionId));
return "{success: true}";
@MessageMapping("/chat/{topic}") @SendTo("/topic/messages") public OutputMessage send(@DestinationVariable("topic") String topic, Message message) throws Exception return new OutputMessage(message.getFrom(), message.getText(), topic);
@MessageMapping("/topology-editor/{topologyId}") public <T extends AbstractEditorOperation> TopologyDTO execute(@DestinationVariable String topologyId, T operation) { // get the topology context. try { initContext(topologyId, operation); // check for topology potential recovery checkTopologyRecovery(); doExecute(operation); // return the topology context return dtoBuilder.buildTopologyDTO(EditionContextManager.get()); } finally { EditionContextManager.get().setCurrentOperation(null); editionContextManager.destroy();