• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java MqttPublishMessage类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中io.netty.handler.codec.mqtt.MqttPublishMessage的典型用法代码示例。如果您正苦于以下问题:Java MqttPublishMessage类的具体用法?Java MqttPublishMessage怎么用?Java MqttPublishMessage使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



MqttPublishMessage类属于io.netty.handler.codec.mqtt包,在下文中一共展示了MqttPublishMessage类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: convertToGetAttributesRequest

import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
private FromDeviceMsg convertToGetAttributesRequest(DeviceSessionCtx ctx, MqttPublishMessage inbound)
    throws AdaptorException {
  String topicName = inbound.variableHeader().topicName();
  try {
    Integer requestId = Integer
        .valueOf(topicName.substring(MqttTopics.DEVICE_ATTRIBUTES_REQUEST_TOPIC_PREFIX.length()));
    String payload = inbound.payload().toString(UTF8);
    JsonElement requestBody = new JsonParser().parse(payload);
    Set<String> clientKeys = toStringSet(requestBody, "clientKeys");
    Set<String> sharedKeys = toStringSet(requestBody, "sharedKeys");
    if (clientKeys == null && sharedKeys == null) {
      return new BasicGetAttributesRequest(requestId);
    } else {
      return new BasicGetAttributesRequest(requestId, clientKeys, sharedKeys);
    }
  } catch (RuntimeException e) {
    log.warn("Failed to decode get attributes request", e);
    throw new AdaptorException(e);
  }
}
 
开发者ID:osswangxining,项目名称:iotplatform,代码行数:21,代码来源:JsonMqttAdaptor.java


示例2: onDeviceTelemetry

import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
public void onDeviceTelemetry(MqttPublishMessage mqttMsg) throws AdaptorException {
    JsonElement json = validateJsonPayload(gatewaySessionId, mqttMsg.payload());
    int requestId = mqttMsg.variableHeader().messageId();
    if (json.isJsonObject()) {
        JsonObject jsonObj = json.getAsJsonObject();
        for (Map.Entry<String, JsonElement> deviceEntry : jsonObj.entrySet()) {
            String deviceName = checkDeviceConnected(deviceEntry.getKey());
            if (!deviceEntry.getValue().isJsonArray()) {
                throw new JsonSyntaxException(CAN_T_PARSE_VALUE + json);
            }
            BasicTelemetryUploadRequest request = new BasicTelemetryUploadRequest(requestId);
            JsonArray deviceData = deviceEntry.getValue().getAsJsonArray();
            for (JsonElement element : deviceData) {
                JsonConverter.parseWithTs(request, element.getAsJsonObject());
            }
            GatewayDeviceSessionCtx deviceSessionCtx = devices.get(deviceName);
            processor.process(new BasicToDeviceActorSessionMsg(deviceSessionCtx.getDevice(),
                    new BasicAdaptorToSessionActorMsg(deviceSessionCtx, request)));
        }
    } else {
        throw new JsonSyntaxException(CAN_T_PARSE_VALUE + json);
    }
}
 
开发者ID:thingsboard,项目名称:thingsboard,代码行数:24,代码来源:GatewaySessionCtx.java


示例3: onDeviceAttributes

import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
public void onDeviceAttributes(MqttPublishMessage mqttMsg) throws AdaptorException {
    JsonElement json = validateJsonPayload(gatewaySessionId, mqttMsg.payload());
    int requestId = mqttMsg.variableHeader().messageId();
    if (json.isJsonObject()) {
        JsonObject jsonObj = json.getAsJsonObject();
        for (Map.Entry<String, JsonElement> deviceEntry : jsonObj.entrySet()) {
            String deviceName = checkDeviceConnected(deviceEntry.getKey());
            if (!deviceEntry.getValue().isJsonObject()) {
                throw new JsonSyntaxException(CAN_T_PARSE_VALUE + json);
            }
            long ts = System.currentTimeMillis();
            BasicUpdateAttributesRequest request = new BasicUpdateAttributesRequest(requestId);
            JsonObject deviceData = deviceEntry.getValue().getAsJsonObject();
            request.add(JsonConverter.parseValues(deviceData).stream().map(kv -> new BaseAttributeKvEntry(kv, ts)).collect(Collectors.toList()));
            GatewayDeviceSessionCtx deviceSessionCtx = devices.get(deviceName);
            processor.process(new BasicToDeviceActorSessionMsg(deviceSessionCtx.getDevice(),
                    new BasicAdaptorToSessionActorMsg(deviceSessionCtx, request)));
        }
    } else {
        throw new JsonSyntaxException(CAN_T_PARSE_VALUE + json);
    }
}
 
开发者ID:thingsboard,项目名称:thingsboard,代码行数:23,代码来源:GatewaySessionCtx.java


示例4: channelRead

import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
@Override
public void channelRead(ChannelHandlerContext ctx, Object message) {
    MqttMessage msg = (MqttMessage) message;
    MqttMessageType messageType = msg.fixedHeader().messageType();

    try {
        switch (messageType) {
            case PUBLISH:
                LOG.info("Received a message of type {}", messageType);
                handlePublish((MqttPublishMessage) msg);
                return;
            default:
                LOG.info("Received a message of type {}", messageType);
        }
    } catch (Exception ex) {
        LOG.error("Bad error in processing the message", ex);
    }
}
 
开发者ID:andsel,项目名称:moquette,代码行数:19,代码来源:PublishReceiverHandler.java


示例5: channelRead

import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
@Override
public void channelRead(ChannelHandlerContext ctx, Object message) {
    MqttMessage msg = (MqttMessage) message;
    MqttMessageType type = msg.fixedHeader().messageType();

    try {
        switch (type) {
            case PUBLISH:
                LOG.info("Received a message of type {}", type);
                handlePublish((MqttPublishMessage) msg);
                return;
            default:
                LOG.info("Received a message of type {}", type);
        }
    } catch (Exception ex) {
        LOG.error("Bad error in processing the message", ex);
    }
}
 
开发者ID:andsel,项目名称:moquette,代码行数:19,代码来源:NettyPublishReceiverHandler.java


示例6: sendPublish

import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
void sendPublish(ClientSession clientsession, MqttPublishMessage pubMessage) {
    String clientId = clientsession.clientID;
    final int messageId = pubMessage.variableHeader().messageId();
    final String topicName = pubMessage.variableHeader().topicName();
    MqttQoS qos = pubMessage.fixedHeader().qosLevel();
    if (LOG.isDebugEnabled()) {
        LOG.debug("Sending PUBLISH message. MessageId={}, CId={}, topic={}, qos={}, payload={}", messageId,
            clientId, topicName, qos, DebugUtils.payload2Str(pubMessage.payload()));
    } else {
        LOG.info("Sending PUBLISH message. MessageId={}, CId={}, topic={}", messageId, clientId, topicName);
    }

    boolean messageDelivered = connectionDescriptorStore.sendMessage(pubMessage, messageId, clientId);

    if (!messageDelivered) {
        if (qos != AT_MOST_ONCE && !clientsession.isCleanSession()) {
            LOG.warn("PUBLISH message could not be delivered. It will be stored. MessageId={}, CId={}, topic={}, "
                + "qos={}, removeTemporaryQoS2={}", messageId, clientId, topicName, qos, false);
            clientsession.enqueue(asStoredMessage(pubMessage));
        } else {
            LOG.warn("PUBLISH message could not be delivered. It will be discarded. MessageId={}, CId={}, topic={}, " +
                "qos={}, removeTemporaryQoS2={}", messageId, clientId, topicName, qos, true);
        }
    }
}
 
开发者ID:andsel,项目名称:moquette,代码行数:26,代码来源:PersistentQueueMessageSender.java


示例7: notifyTopicPublished

import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
@Override
public void notifyTopicPublished(final MqttPublishMessage msg, final String clientID, final String username) {
    msg.retain();

    executor.execute(() -> {
            try {
                int messageId = msg.variableHeader().messageId();
                String topic = msg.variableHeader().topicName();
                for (InterceptHandler handler : handlers.get(InterceptPublishMessage.class)) {
                    LOG.debug("Notifying MQTT PUBLISH message to interceptor. CId={}, messageId={}, topic={}, "
                            + "interceptorId={}", clientID, messageId, topic, handler.getID());
                    handler.onPublish(new InterceptPublishMessage(msg, clientID, username));
                }
            } finally {
                ReferenceCountUtil.release(msg);
            }
    });
}
 
开发者ID:andsel,项目名称:moquette,代码行数:19,代码来源:BrokerInterceptor.java


示例8: receivedPublishQos0

import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
void receivedPublishQos0(Channel channel, MqttPublishMessage msg) {
    // verify if topic can be write
    final Topic topic = new Topic(msg.variableHeader().topicName());
    String clientID = NettyUtils.clientID(channel);
    String username = NettyUtils.userName(channel);
    if (!m_authorizator.canWrite(topic, username, clientID)) {
        LOG.error("MQTT client is not authorized to publish on topic. CId={}, topic={}", clientID, topic);
        return;
    }

    // route message to subscribers
    IMessagesStore.StoredMessage toStoreMsg = asStoredMessage(msg);
    toStoreMsg.setClientID(clientID);

    this.publisher.publish2Subscribers(toStoreMsg, topic);

    if (msg.fixedHeader().isRetain()) {
        // QoS == 0 && retain => clean old retained
        m_messagesStore.cleanRetained(topic);
    }

    m_interceptor.notifyTopicPublished(msg, clientID, username);
}
 
开发者ID:andsel,项目名称:moquette,代码行数:24,代码来源:Qos0PublishHandler.java


示例9: processMqttMsg

import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
private void processMqttMsg(ChannelHandlerContext ctx, MqttMessage msg) {
  // deviceSessionCtx.setChannel(ctx);
  // assetSessionCtx.setChannel(ctx);

  switch (msg.fixedHeader().messageType()) {
  case CONNECT:
    processConnect(ctx, (MqttConnectMessage) msg);
    break;
  case PUBLISH:
    processPublish(ctx, (MqttPublishMessage) msg);
    // System.out.println("write...");
    // ctx.write("just for test");
    break;
  case SUBSCRIBE:
    processSubscribe(ctx, (MqttSubscribeMessage) msg);
    break;
  case UNSUBSCRIBE:
    processUnsubscribe(ctx, (MqttUnsubscribeMessage) msg);
    break;
  case PINGREQ:
    if (checkConnected(ctx)) {
      ctx.writeAndFlush(new MqttMessage(new MqttFixedHeader(PINGRESP, false, AT_MOST_ONCE, false, 0)));
    }
    break;
  case DISCONNECT:
    if (checkConnected(ctx)) {
      processDisconnect(ctx);
    }
    break;
  }
}
 
开发者ID:osswangxining,项目名称:iothub,代码行数:32,代码来源:MqttTransportHandler.java


示例10: processPublish

import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
private void processPublish(ChannelHandlerContext ctx, MqttPublishMessage mqttMsg) {
  if (!checkConnected(ctx)) {
    return;
  }
  String topicName = mqttMsg.variableHeader().topicName();
  int msgId = mqttMsg.variableHeader().messageId();
  log.info("[{}] Processing publish msg [{}][{}]!", sessionId, topicName, msgId);

  if (topicName.startsWith(BASE_GATEWAY_API_TOPIC)) {
    // if (gatewaySessionCtx != null) {
    // gatewaySessionCtx.setChannel(ctx);
    // try {
    // if (topicName.equals(GATEWAY_TELEMETRY_TOPIC)) {
    // gatewaySessionCtx.onDeviceTelemetry(mqttMsg);
    // } else if (topicName.equals(GATEWAY_ATTRIBUTES_TOPIC)) {
    // gatewaySessionCtx.onDeviceAttributes(mqttMsg);
    // } else if (topicName.equals(GATEWAY_ATTRIBUTES_REQUEST_TOPIC)) {
    // gatewaySessionCtx.onDeviceAttributesRequest(mqttMsg);
    // } else if (topicName.equals(GATEWAY_RPC_TOPIC)) {
    // gatewaySessionCtx.onDeviceRpcResponse(mqttMsg);
    // } else if (topicName.equals(GATEWAY_CONNECT_TOPIC)) {
    // gatewaySessionCtx.onDeviceConnect(mqttMsg);
    // } else if (topicName.equals(GATEWAY_DISCONNECT_TOPIC)) {
    // gatewaySessionCtx.onDeviceDisconnect(mqttMsg);
    // }
    // } catch (RuntimeException | AdaptorException e) {
    // log.warn("[{}] Failed to process publish msg [{}][{}]", sessionId,
    // topicName, msgId, e);
    // }
    // }
  } else {
    processDevicePublish(ctx, mqttMsg, topicName, msgId);
  }
}
 
开发者ID:osswangxining,项目名称:iothub,代码行数:35,代码来源:MqttTransportHandler.java


示例11: add

import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
public void add(Topic topic, MqttPublishMessage message){
    synchronized (lock){
        if(node == null || topic == null) return;
        topic.reset();
        if(message != null) node.publish(message,topic.isTail());
        buildNodes(node,topic.moveToNext(),message);
    }
}
 
开发者ID:Dovakin-IO,项目名称:DovakinMQ,代码行数:9,代码来源:SubscriptionTree.java


示例12: buildNodes

import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
private void buildNodes(SubscriptionNode node, Topic topic, MqttPublishMessage message){
    Topic.Element element = topic.next();
    if (element == null) return;
    SubscriptionNode var = node.addNode(element);
    if(message != null) var.publish(message, !topic.hasNext());
    buildNodes(var,topic,message);
}
 
开发者ID:Dovakin-IO,项目名称:DovakinMQ,代码行数:8,代码来源:SubscriptionTree.java


示例13: publish

import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
public static void publish(MqttPublishMessage message){
    Topic topic = new Topic(message.variableHeader().topicName());
    Topic.Element element = topic.getHeadElement();
    if (element == null) return;
    SubscriptionTree cachedTree = subscriptions.get(element.getValue());
    if(cachedTree == null){
        SubscriptionTree tree = new SubscriptionTree();
        tree.build(topic);
        subscriptions.putIfAbsent(element.getValue(), tree);
    } else {
        cachedTree.add(topic,message);
    }
}
 
开发者ID:Dovakin-IO,项目名称:DovakinMQ,代码行数:14,代码来源:SubscriptionCache.java


示例14: convertToActorMsg

import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
@Override
public AdaptorToSessionActorMsg convertToActorMsg(DeviceSessionCtx ctx, MsgType type, MqttMessage inbound)
    throws AdaptorException {
  FromDeviceMsg msg;
  switch (type) {
  case POST_TELEMETRY_REQUEST:
    msg = convertToTelemetryUploadRequest(ctx, (MqttPublishMessage) inbound);
    break;
  case POST_ATTRIBUTES_REQUEST:
    msg = convertToUpdateAttributesRequest(ctx, (MqttPublishMessage) inbound);
    break;
  case SUBSCRIBE_ATTRIBUTES_REQUEST:
    msg = new AttributesSubscribeMsg();
    break;
  case UNSUBSCRIBE_ATTRIBUTES_REQUEST:
    msg = new AttributesUnsubscribeMsg();
    break;
  case SUBSCRIBE_RPC_COMMANDS_REQUEST:
    msg = new RpcSubscribeMsg();
    break;
  case UNSUBSCRIBE_RPC_COMMANDS_REQUEST:
    msg = new RpcUnsubscribeMsg();
    break;
  case GET_ATTRIBUTES_REQUEST:
    msg = convertToGetAttributesRequest(ctx, (MqttPublishMessage) inbound);
    break;
  case TO_DEVICE_RPC_RESPONSE:
    msg = convertToRpcCommandResponse(ctx, (MqttPublishMessage) inbound);
    break;
  case TO_SERVER_RPC_REQUEST:
    msg = convertToServerRpcRequest(ctx, (MqttPublishMessage) inbound);
    break;
  default:
    log.warn("[{}] Unsupported msg type: {}!", ctx.getSessionId(), type);
    throw new AdaptorException(new IllegalArgumentException("Unsupported msg type: " + type + "!"));
  }
  return new BasicAdaptorToSessionActorMsg(ctx, msg);
}
 
开发者ID:osswangxining,项目名称:iotplatform,代码行数:39,代码来源:JsonMqttAdaptor.java


示例15: createMqttPublishMsg

import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
private MqttPublishMessage createMqttPublishMsg(DeviceSessionCtx ctx, String topic, JsonElement json) {
  MqttFixedHeader mqttFixedHeader = new MqttFixedHeader(MqttMessageType.PUBLISH, false, MqttQoS.AT_LEAST_ONCE, false,
      0);
  MqttPublishVariableHeader header = new MqttPublishVariableHeader(topic, ctx.nextMsgId());
  ByteBuf payload = ALLOCATOR.buffer();
  payload.writeBytes(GSON.toJson(json).getBytes(UTF8));
  return new MqttPublishMessage(mqttFixedHeader, header, payload);
}
 
开发者ID:osswangxining,项目名称:iotplatform,代码行数:9,代码来源:JsonMqttAdaptor.java


示例16: convertToRpcCommandResponse

import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
private FromDeviceMsg convertToRpcCommandResponse(DeviceSessionCtx ctx, MqttPublishMessage inbound)
    throws AdaptorException {
  String topicName = inbound.variableHeader().topicName();
  try {
    Integer requestId = Integer.valueOf(topicName.substring(MqttTopics.DEVICE_RPC_RESPONSE_TOPIC.length()));
    String payload = inbound.payload().toString(UTF8);
    return new ToDeviceRpcResponseMsg(requestId, payload);
  } catch (RuntimeException e) {
    log.warn("Failed to decode get attributes request", e);
    throw new AdaptorException(e);
  }
}
 
开发者ID:osswangxining,项目名称:iotplatform,代码行数:13,代码来源:JsonMqttAdaptor.java


示例17: convertToUpdateAttributesRequest

import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
private UpdateAttributesRequest convertToUpdateAttributesRequest(SessionContext ctx, MqttPublishMessage inbound)
    throws AdaptorException {
  String payload = validatePayload(ctx.getSessionId(), inbound.payload());
  try {
    return JsonConverter.convertToAttributes(new JsonParser().parse(payload), inbound.variableHeader().messageId());
  } catch (IllegalStateException | JsonSyntaxException ex) {
    throw new AdaptorException(ex);
  }
}
 
开发者ID:osswangxining,项目名称:iotplatform,代码行数:10,代码来源:JsonMqttAdaptor.java


示例18: convertToTelemetryUploadRequest

import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
private TelemetryUploadRequest convertToTelemetryUploadRequest(SessionContext ctx, MqttPublishMessage inbound)
    throws AdaptorException {
  String payload = validatePayload(ctx.getSessionId(), inbound.payload());
  try {
    return JsonConverter.convertToTelemetry(new JsonParser().parse(payload), inbound.variableHeader().messageId());
  } catch (IllegalStateException | JsonSyntaxException ex) {
    throw new AdaptorException(ex);
  }
}
 
开发者ID:osswangxining,项目名称:iotplatform,代码行数:10,代码来源:JsonMqttAdaptor.java


示例19: convertToServerRpcRequest

import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
private FromDeviceMsg convertToServerRpcRequest(DeviceSessionCtx ctx, MqttPublishMessage inbound)
    throws AdaptorException {
  String topicName = inbound.variableHeader().topicName();
  String payload = validatePayload(ctx.getSessionId(), inbound.payload());
  try {
    Integer requestId = Integer.valueOf(topicName.substring(MqttTopics.DEVICE_RPC_REQUESTS_TOPIC.length()));
    return JsonConverter.convertToServerRpcRequest(new JsonParser().parse(payload), requestId);
  } catch (IllegalStateException | JsonSyntaxException ex) {
    throw new AdaptorException(ex);
  }
}
 
开发者ID:osswangxining,项目名称:iotplatform,代码行数:12,代码来源:JsonMqttAdaptor.java


示例20: channelRead0

import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
@Override
protected void channelRead0(ChannelHandlerContext ctx, MqttMessage msg) throws Exception {
	switch (msg.fixedHeader().messageType()) {
	case PUBLISH:
		if (receiver != null) {
			receiver.messageReceived(Message.newMessage(client.clientId(), (MqttPublishMessage) msg));
		}

		int messageId = ((MqttPublishMessage) msg).variableHeader().messageId();
		if (((MqttPublishMessage) msg).fixedHeader().qosLevel() == MqttQoS.AT_LEAST_ONCE) {
			client.send(MqttMessageFactory.puback(messageId));
		}
		else if (((MqttPublishMessage) msg).fixedHeader().qosLevel() == MqttQoS.EXACTLY_ONCE) {
			client.send(MqttMessageFactory.pubrec(messageId));
		}
		break;

	case CONNACK:
		sharedObject.receivedMessage(msg);

		synchronized (sharedObject.locker()) {
			sharedObject.locker().notify();
		}
		break;

	case PUBREC:
		client.send(MqttMessageFactory.pubrel(((MqttMessageIdVariableHeader) msg.variableHeader()).messageId()));
		break;

	case SUBACK:
	case PUBACK:
	case PUBCOMP:
	default:
		break;
	}
}
 
开发者ID:anyflow,项目名称:lannister,代码行数:37,代码来源:MqttPacketReceiver.java



注:本文中的io.netty.handler.codec.mqtt.MqttPublishMessage类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java Future类代码示例发布时间:2022-05-22
下一篇:
Java Ant类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap