The reprex you have provided doesn't actually reproduce your issue, but I guess you are getting that warning message because your real data set contains missing values, for example, if a manually place a missing value in your sample data I get the same warning message but it doesn't actually affect the outcome, it is only making me aware that there are missing values.
library(ggplot2)
item_1 <-c(3, 3, 2, 4)
item_2 <-c(2, 4, 5 ,6)
item_3 <-c(4, 5 ,6, NA) # Introducing a missing value
survey <- data.frame(item_1, item_2, item_3)
survey_subscale <- survey[c("item_1", "item_3")]
ggplot(stack(survey_subscale), aes(x = ind,y = values)) +
geom_boxplot(outlier.colour = "red", outlier.shape = 16,
outlier.size = 2, notch = FALSE)
#> Warning: Removed 1 rows containing non-finite values (stat_boxplot).

Created on 2022-06-27 by the reprex package (v2.0.1)
The way you are making the plot is perfectly valid, the stack() function is reshaping your data frame into a long format which is exactly what you need to plot several boxplots by a categorical variable. Although, since you are using ggplot2 which is part of the tidyverse family of packages you might prefer a more idiomatic syntax like this one.
survey %>%
select(item_1, item_3) %>%
pivot_longer(cols = everything(),
names_to = "item",
values_to = "value") %>%
ggplot(aes(x = item, y = value)) +
geom_boxplot(outlier.colour = "red", outlier.shape = 16,
outlier.size = 2, notch = FALSE)