This is an automated email from the ASF dual-hosted git repository.
benjobs pushed a commit to branch dev-2.1.5
in repository https://gitbox.apache.org/repos/asf/incubator-streampark.git
The following commit(s) were added to refs/heads/dev-2.1.5 by this push:
new c71b7997d [Improve] notify message improvement (#3944)
c71b7997d is described below
commit c71b7997d4f0b692ab0f976f415c7abbb1ef2bed
Author: benjobs <[email protected]>
AuthorDate: Tue Aug 6 16:05:06 2024 +0800
[Improve] notify message improvement (#3944)
* [Improve] notify message improvement
---
.../streampark-console-service/pom.xml | 9 +--
.../console/base/config/WebSocketConfig.java | 30 --------
.../console/core/controller/MessageController.java | 4 +-
.../console/core/service/MessageService.java | 2 -
.../core/service/impl/AppBuildPipeServiceImpl.java | 2 +-
.../core/service/impl/MessageServiceImpl.java | 7 --
.../console/core/websocket/WebSocketEndpoint.java | 89 ----------------------
.../console/system/authentication/ShiroConfig.java | 2 -
.../src/api/system/notify.ts | 4 +-
.../default/header/components/notify/index.vue | 43 ++---------
10 files changed, 14 insertions(+), 178 deletions(-)
diff --git a/streampark-console/streampark-console-service/pom.xml
b/streampark-console/streampark-console-service/pom.xml
index f906b4500..bed74a135 100644
--- a/streampark-console/streampark-console-service/pom.xml
+++ b/streampark-console/streampark-console-service/pom.xml
@@ -43,9 +43,9 @@
<docker.client.version>3.2.13</docker.client.version>
- <commons-compress.version>1.21</commons-compress.version>
+ <commons-compress.version>1.26.0</commons-compress.version>
<javax-mail.version>1.4.7</javax-mail.version>
- <jsch.version>0.2.11</jsch.version>
+ <jsch.version>0.2.18</jsch.version>
<shiro.version>1.10.0</shiro.version>
<p6spy.version>3.9.1</p6spy.version>
<freemarker.version>2.3.32</freemarker.version>
@@ -183,11 +183,6 @@
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-websocket</artifactId>
- </dependency>
-
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/config/WebSocketConfig.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/config/WebSocketConfig.java
deleted file mode 100644
index 8fa4dc53a..000000000
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/config/WebSocketConfig.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.streampark.console.base.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.socket.server.standard.ServerEndpointExporter;
-
-@Configuration
-public class WebSocketConfig {
- @Bean
- public ServerEndpointExporter serverEndpointExporter() {
- return new ServerEndpointExporter();
- }
-}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/MessageController.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/MessageController.java
index f13fe254c..da1601175 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/MessageController.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/MessageController.java
@@ -46,8 +46,8 @@ public class MessageController {
return RestResponse.success(pages);
}
- @PostMapping("delnotice")
- public RestResponse delNotice(Long id) {
+ @PostMapping("clear")
+ public RestResponse clear(Long id) {
return RestResponse.success(messageService.removeById(id));
}
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/MessageService.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/MessageService.java
index a26fd8be7..f29291f19 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/MessageService.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/MessageService.java
@@ -26,7 +26,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
public interface MessageService extends IService<Message> {
- void push(Message message);
-
IPage<Message> getUnRead(NoticeType noticeType, RestRequest request);
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/AppBuildPipeServiceImpl.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/AppBuildPipeServiceImpl.java
index 289353511..1d4edd7cd 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/AppBuildPipeServiceImpl.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/AppBuildPipeServiceImpl.java
@@ -256,7 +256,7 @@ public class AppBuildPipeServiceImpl
app.getJobName().concat(" release failed"),
Utils.stringifyException(snapshot.error().exception()),
NoticeType.EXCEPTION);
- messageService.push(message);
+ messageService.save(message);
app.setRelease(ReleaseState.FAILED.get());
app.setOptionState(OptionState.NONE.getValue());
app.setBuild(true);
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/MessageServiceImpl.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/MessageServiceImpl.java
index 497390136..31b83aead 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/MessageServiceImpl.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/MessageServiceImpl.java
@@ -23,7 +23,6 @@ import org.apache.streampark.console.core.entity.Message;
import org.apache.streampark.console.core.enums.NoticeType;
import org.apache.streampark.console.core.mapper.MessageMapper;
import org.apache.streampark.console.core.service.MessageService;
-import org.apache.streampark.console.core.websocket.WebSocketEndpoint;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -40,12 +39,6 @@ import
org.springframework.transaction.annotation.Transactional;
public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message>
implements MessageService {
- @Override
- public void push(Message message) {
- save(message);
- WebSocketEndpoint.pushNotice(message);
- }
-
@Override
public IPage<Message> getUnRead(NoticeType noticeType, RestRequest request) {
Page<Message> page = MybatisPager.getPage(request);
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/websocket/WebSocketEndpoint.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/websocket/WebSocketEndpoint.java
deleted file mode 100644
index 1524a6ca4..000000000
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/websocket/WebSocketEndpoint.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.streampark.console.core.websocket;
-
-import org.apache.streampark.console.core.entity.Message;
-
-import io.undertow.util.CopyOnWriteMap;
-import lombok.Getter;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-import javax.websocket.OnClose;
-import javax.websocket.OnError;
-import javax.websocket.OnOpen;
-import javax.websocket.Session;
-import javax.websocket.server.PathParam;
-import javax.websocket.server.ServerEndpoint;
-
-import java.io.IOException;
-import java.util.Map;
-
-@Slf4j
-@Component
-@ServerEndpoint(value = "/websocket/{id}")
-public class WebSocketEndpoint {
-
- private static final Map<String, Session> SOCKET_SESSIONS = new
CopyOnWriteMap<>();
-
- @Getter private String id;
-
- @Getter private Session session;
-
- @OnOpen
- public void onOpen(Session session, @PathParam("id") String id) {
- log.debug("websocket onOpen....");
- this.id = id;
- this.session = session;
- SOCKET_SESSIONS.put(id, session);
- }
-
- @OnClose
- public void onClose() throws IOException {
- log.debug("websocket onClose....");
- this.session.close();
- SOCKET_SESSIONS.remove(this.id);
- }
-
- @OnError
- public void onError(Session session, Throwable e) {
- log.error(e.getMessage(), e);
- }
-
- public static void writeMessage(String socketId, String message) {
- try {
- Session session = SOCKET_SESSIONS.get(socketId);
- if (session != null) {
- session.getBasicRemote().sendText(message);
- }
- } catch (IOException e) {
- log.error(e.getMessage(), e);
- }
- }
-
- public static void pushNotice(Message message) {
- try {
- Session session = SOCKET_SESSIONS.get(message.getUserId().toString());
- if (session != null) {
- session.getBasicRemote().sendObject(message);
- }
- } catch (Exception e) {
- log.error(e.getMessage(), e);
- }
- }
-}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/ShiroConfig.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/ShiroConfig.java
index 2585b41e4..64a85a350 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/ShiroConfig.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/ShiroConfig.java
@@ -56,8 +56,6 @@ public class ShiroConfig {
filterChainDefinitionMap.put("/systemName", "anon");
filterChainDefinitionMap.put("/member/teams", "anon");
filterChainDefinitionMap.put("/user/check/**", "anon");
- filterChainDefinitionMap.put("/user/initTeam", "anon");
- filterChainDefinitionMap.put("/websocket/**", "anon");
filterChainDefinitionMap.put("/metrics/**", "anon");
filterChainDefinitionMap.put("/index.html", "anon");
diff --git
a/streampark-console/streampark-console-webapp/src/api/system/notify.ts
b/streampark-console/streampark-console-webapp/src/api/system/notify.ts
index 3ed4e6758..e58dd2368 100644
--- a/streampark-console/streampark-console-webapp/src/api/system/notify.ts
+++ b/streampark-console/streampark-console-webapp/src/api/system/notify.ts
@@ -27,7 +27,7 @@ interface NotifyParam {
}
enum NOTIFY_API {
NOTICE = '/message/notice',
- DEL = '/message/delnotice',
+ CLEAR = '/message/clear',
}
/**
* Get notification list
@@ -45,7 +45,7 @@ export function fetchNotify(data: NotifyParam):
Promise<NotifyList> {
*/
export function fetchNotifyDelete(id: string): Promise<NotifyList> {
return defHttp.post({
- url: NOTIFY_API.DEL,
+ url: NOTIFY_API.CLEAR,
data: { id },
});
}
diff --git
a/streampark-console/streampark-console-webapp/src/layouts/default/header/components/notify/index.vue
b/streampark-console/streampark-console-webapp/src/layouts/default/header/components/notify/index.vue
index 1bbaa3293..c0c658b96 100644
---
a/streampark-console/streampark-console-webapp/src/layouts/default/header/components/notify/index.vue
+++
b/streampark-console/streampark-console-webapp/src/layouts/default/header/components/notify/index.vue
@@ -33,20 +33,17 @@
</div>
</template>
<script lang="ts">
- import { computed, defineComponent, ref, unref, watch, h } from 'vue';
-
+ import { computed, defineComponent, ref, unref, h } from 'vue';
import { Popover, Tabs, Badge, Spin } from 'ant-design-vue';
import { BellOutlined } from '@ant-design/icons-vue';
import NoticeList from './NoticeList.vue';
import { useDesign } from '/@/hooks/web/useDesign';
import { fetchNotify, fetchNotifyDelete } from '/@/api/system/notify';
import { NotifyItem } from '/@/api/system/model/notifyModel';
- import { useWebSocket } from '@vueuse/core';
- import { useUserStoreWithOut } from '/@/store/modules/user';
import { useMessage } from '/@/hooks/web/useMessage';
- import { isObject } from '/@/utils/is';
import { useI18n } from '/@/hooks/web/useI18n';
const { t } = useI18n();
+
export interface TabItem {
key: number;
name: string;
@@ -58,8 +55,7 @@
components: { Popover, BellOutlined, Tabs, TabPane: Tabs.TabPane, Badge,
NoticeList, Spin },
setup() {
const { prefixCls } = useDesign('header-notify');
- const userStore = useUserStoreWithOut();
- const { createMessage, createConfirm } = useMessage();
+ const { createConfirm } = useMessage();
const notifyType = ref(1);
const currentPage = ref(1);
const notifyVisible = ref(false);
@@ -75,6 +71,7 @@
}
return count;
});
+
/* View notification messages */
async function handleNotifyInfo(record: NotifyItem) {
notifyVisible.value = false;
@@ -93,7 +90,7 @@
try {
notifyLoading.value = true;
await fetchNotifyDelete(id);
- getNotifyList(unref(notifyType));
+ await getNotifyList(unref(notifyType));
} catch (error) {
console.error(error);
} finally {
@@ -112,6 +109,7 @@
notifyLoading.value = false;
}
}
+
/* Process notification message data */
function handleNotifyMessage(type: number, data: NotifyItem[]) {
/* The abnormal alarm */
@@ -122,35 +120,8 @@
}
}
- const wbSocketUrl = `${window.location.origin}${
- import.meta.env.VITE_GLOB_API_URL +
(import.meta.env.VITE_GLOB_API_URL_PREFIX || '')
- }/websocket/${userStore.getUserInfo.userId}`;
+ setInterval(() => getNotifyList(1), 1000 * 30);
- const { data } = useWebSocket(wbSocketUrl.replace(/http/, 'ws'), {
- autoReconnect: {
- retries: 3,
- delay: 1000,
- onFailed() {
- createMessage.warning('Message server connection failed!');
- },
- },
- });
- watch([data, currentPage], ([newData]: [NotifyItem], [newPage]) => {
- if (newData && isObject(newData)) {
- /* The abnormal alarm */
- if (unref(notifyType) === 1) {
- listData.value[0].list.push(newData);
- } else {
- listData.value[1].list.push(newData);
- }
- handleNotifyInfo(newData);
- }
- if (newPage) {
- getNotifyList(unref(notifyType));
- }
- });
- getNotifyList(1);
- getNotifyList(2);
return {
prefixCls,
listData,