我有一个 Spring Boot 应用程序,其中添加了 websocket 功能,以便 websocket 客户端可以发出订阅请求以订阅 websocket 主题之外的消息。
在我的控制器的方法中,我添加了一个注释 @SubscribeMapping("/topic/mytopic")。
我的 WebSocketConfig 如下所示:
@Configuration
@ComponentScan
@EnableWebSocket
public class WebSocketConfig extends WebSocketMessageBrokerConfiguratioSupport{
@Override
public void registerStompEndpoints(StompEndpointRegistry registry){
registry.addEndpoint("/my-app")
.setAllowedOrigin("*")
.withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry){
registry.enableSimpleBroker("/topic/");
registry.setApplicationDestinationPrefixes("/");
}
}
Run Code Online (Sandbox Code Playgroud)
当我进入浏览器并输入:
http://localhost:<MY_PORT>/my-app
Run Code Online (Sandbox Code Playgroud)
然后我收到回复“欢迎使用 SockJS!”。这表明Websocket服务器确实已启动并正在运行。
但令我惊讶的是,当我使用 Postman 的 Websocket 功能并尝试使用以下网址进行 Websocket 订阅时:
ws://localhost:<MY_PORT>/my-app/topic/mytopic
Run Code Online (Sandbox Code Playgroud)
此错误记录在控制台中:无效的 SockJS 路径 /topic/mytopic - 需要有 3 个路径段
并且连接会自动断开。
我在这里做错了什么吗?请指教。
对于我的一个Spring bean(比如Application类),我使用@Value注释从属性文件(prop.properties)中获取属性的值(my.property.flag = true/false).这完全没问题.
我需要编写一个集成测试(比如说ApplicationIt类),我需要测试属性的值,即true和false.
在我的属性文件中,属性的值设置为true.是否可以从我的Integration测试中将值动态设置为false?
例如,
prop.properties:
my.property.flag=true
Run Code Online (Sandbox Code Playgroud)
应用程序类文件:
@Component
class Application {
//This value is fetched from properties file
//the value is set to true.
@Value(${my.property.flag})
private String isTrue;
......
..........
}
Run Code Online (Sandbox Code Playgroud)
整合测试:
class ApplicationIT {
//how can I set the value of isTrue here to false?
}
Run Code Online (Sandbox Code Playgroud) 我有一个奇怪的场景,我有一个项目"Y",它有一个模块"X"和其他一些模块.
X是项目Y的一部分,但它不作为该项目的模块链接.因此,每次发布更新版本的Y时,都需要手动更新X中的父版本.
我需要以下列方式更新Y项目:a)每次发布Y项目时,X中的父项目版本应由TeamCity自动更新(与其他模块类似)
b)X不得是Y分布的一部分
c)一旦部署在TeamCity中,它就不应该从X运行测试(它们应该使用Integration测试和发布版本运行)